声明本文仅作学习交流使用引用需标明出处。如有谬误敬请指正本次内容围绕Linux运维核心技能scp远程拷贝、源码编译安装、rsync同步、inotifyrsync实时同步展开实验基于两台互通虚拟机client192.168.8.100/24、server192.168.8.101/24所有操作均要求关闭firewalld服务、将SELinux设为disabled。一、scp远程拷贝1. 核心概述scp是Linux下基于SSH协议的安全远程复制命令scp ssh cp支持本地与远程主机间加密传输文件/目录继承SSH特性支持口令认证输入密码和无密码认证SSH密钥核心选项-r递归拷贝拷贝目录时必须使用-P大写指定远程服务器SSH端口号默认22可省略。2. 实验环境准备clientserver主机均执行1client主机配置[rootlocalhost ~]# hostnamectl set-hostname client #配置主机名退出窗口重新进入生效[rootclient ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.8.100/24 connection.autoconnect yes[rootclient ~]# nmcli connection up ens160连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/6[rootclient ~]# ifconfig ens160 | head -2[rootclient ~]# systemctl disable firewalld #关闭firewalld服务开机自启[rootclient ~]# systemctl stop firewalld #停止firewalld服务[rootclient ~]# vim /etc/selinux/config #修改SElinux配置文件# 配置文件中修改SELINUXdisabled[rootclient ~]# reboot #重启操作系统使SELinux配置生效[rootclient ~]# getenforce #查看SELinux状态确保为disabled状态[rootclient ~]# systemctl status firewalld #查看firewalld状态确保为停止状态2server主机配置[rootlocalhost ~]# hostnamectl set-hostname server #配置主机名退出窗口重新进入生效[rootserver ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.8.101/24 connection.autoconnect yes[rootserver ~]# nmcli connection up ens160连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/6[rootserver ~]# ifconfig ens160 | head -2[rootserver ~]# systemctl disable firewalld #关闭firewalld服务开机自启[rootserver ~]# systemctl stop firewalld #停止firewalld服务[rootserver ~]# vim /etc/selinux/config #修改SElinux配置文件# 配置文件中修改SELINUXdisabled[rootserver ~]# reboot #重启操作系统使SELinux配置生效[rootserver ~]# getenforce #查看SELinux状态确保为disabled状态[rootserver ~]# systemctl status firewalld #查看firewalld状态确保为停止状态3. scp上传本地→远程client主机操作核心格式scp [选项] 本地文件或目录 用户远程主机:/远程主机目标目录[rootclient ~]# scp /etc/hostname root192.168.8.101:/opt #远程拷贝单文件root192.168.8.101s password:123456#输入密码不显示直接回车[rootserver ~]# ls /opt #查看server主机/opt下的数据[rootclient ~]# scp /etc/shells root192.168.8.101:/opt #远程拷贝单文件[rootclient ~]# scp -r /boot root192.168.8.101:/opt #远程拷贝目录必加-r[rootclient ~]# scp /etc/passwd /etc/group root192.168.8.101:/opt #远程批量拷贝多文件[rootserver ~]# ls /opt #查看server主机/opt/里的内容4. scp下载远程→本地client主机操作核心格式scp [选项] 用户远程主机:/远程主机文件或目录 本地目标目录[rootclient ~]# scp root192.168.8.101:/etc/hostname /opt #远程拷贝单文件到本地root192.168.8.101s password:123456#输入密码不显示直接回车[rootclient ~]# ls /opt #查看client主机/opt下的数据[rootclient ~]# scp root192.168.8.101:/etc/shells /mnt #远程拷贝单文件到本地/mnt[rootclient ~]# scp -r root192.168.8.101:/boot /mnt #远程拷贝目录到本地必加-r[rootclient ~]# scp root192.168.8.101:/etc/passwd root192.168.8.101:/etc/group /opt #远程批量拷贝多文件到本地[rootclient ~]# ls /mnt #查看client主机/mnt里的内容5. 核心小结掌握scp上传本地→远程和下载远程→本地两大核心场景牢记目录拷贝必须加-r口令认证时密码输入无回显直接输入后回车即可scp基于SSH协议加密传输保证数据传输安全性。二、源码编译安装1. 核心优势可获取软件最新版本及时修复官方BUG源码包多为压缩包格式软件功能可按需选择/定制可选功能比预编译包如rpm更丰富源码包跨平台性强适用于各种Linux发行版所有rpm预编译包均由源码包编译而来最新源码包可从软件官方网站下载。2. 前置准备配置本地YUM仓库client主机为安装编译依赖工具需配置本地光盘YUM仓库实现光盘永久挂载步骤如下[rootclient ~]# mkdir /mydvd #创建光盘挂载点[rootclient ~]# vim /etc/fstab #编写配置文件实现光盘永久挂载# 在配置文件最后一行下方追加/dev/cdrom /mydvd iso9660 defaults 0 0[rootclient ~]# mount -a #刷新配置文件使挂载生效[rootclient ~]# df -h #查看挂载信息验证光盘挂载成功[rootclient ~]# mkdir /etc/yum.repos.d/bak #创建YUM配置文件备份目录[rootclient ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak #移动系统自带YUM客户端文件至备份目录[rootclient ~]# vim /etc/yum.repos.d/mydvd.repo #编写本地YUM仓库配置文件# 配置文件完整内容[AppStream]#仓库名称AppStreamnameAppStream#描述信息baseurlfile:///mydvd/AppStream#指定YUM仓库repodata位置file://表示本地协议enabled1#启用仓库gpgcheck0#不做签名验证[BaseOS]#仓库名称BaseOSnameBaseOS#描述信息baseurlfile:///mydvd/BaseOS#指定YUM仓库repodata位置file://表示本地协议enabled1#启用仓库gpgcheck0#不做签名验证[rootclient ~]# dnf repolist -v #查看仓库软件包数量验证YUM仓库配置生效3. 准备编译环境client主机开源软件多基于C/C语言开发需安装gcc、gcc-c、make等核心编译工具[rootclient ~]# dnf -y install gcc gcc-c make #安装编译依赖工具-y自动确认[rootclient ~]# rpm -q gcc gcc-c make #检查软件包是否安装成功[rootclient ~]# gcc --version #检查gcc版本# 示例输出gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-10)4. 标准实现流程以inotify-tools-3.13为例client主机源码编译安装通用标准流程获取源码包→解压→初始化→编译→安装→验证以下为完整实操命令1获取并解压源码包# 通过WindTerm远程连接client按alt w再按alt e打开文件管理器将inotify-tools-3.13.tar.gz拖拽至/root[rootclient ~]# ls #查看源码包是否已上传至虚拟机/root# 示例输出公共 视频 文档 音乐 anaconda-ks.cfg inotify-tools-3.13.tar.gz# 模板 图片 下载 桌面 initial-setup-ks.cfg[rootclient ~]# tar -xf inotify-tools-3.13.tar.gz -C /usr/src/ #释放源码包至/usr/src/[rootclient ~]# ls /usr/src/ #查看释放结果# 示例输出debug inotify-tools-3.13 kernels2初始化生成Makefile编译说明书[rootclient ~]# cd /usr/src/inotify-tools-3.13 #切换至源码包目录[rootclient inotify-tools-3.13]# ./configure #初始化检查系统环境并生成Makefile[rootclient inotify-tools-3.13]# ls Makefile #查看Makefile是否生成验证初始化成功3编译及安装[rootclient inotify-tools-3.13]# make #编译读取Makefile调用gcc生成二进制程序[rootclient inotify-tools-3.13]# make install #安装将编译好的文件复制到系统安装目录# 注两步可合并执行make make install 表示前方命令执行成功后再执行后方命令4验证安装结果[rootclient inotify-tools-3.13]# ls /usr/local/bin/inotifywa* #查看安装的inotify相关程序[rootclient inotify-tools-3.13]# inotifywait --help #查看程序的帮助信息验证程序可用5. 核心小结掌握源码编译安装6步标准流程理解各步骤核心作用解压释放源码configure检查环境生成Makefilemake编译源码make install安装程序编译前必须安装C/C编译依赖且需配置可用的YUM仓库./configure --help可查看自定义配置参数如--prefix可指定软件安装路径三、rsync同步1. 核心概述rsyncRemote Sync远程同步支持本地同步、远程同步官方网址http://rsync.samba.org/核心优势增量拷贝仅传输源目录与目标目录之间变化过的数据区别于cp/scp的完全拷贝无论数据是否变化均全部传输同步效率更高基于SSH协议实现远程同步要求远程主机开启sshd服务支持口令认证/无密码认证。2. 核心语法与关键差异基础命令格式rsync [选项] 源目录 目标目录核心易错点源目录加/与不加/效果完全不同是rsync使用的关键rsync [选项] /src /dst将整个/src目录同步至/dst结果为/dst/srcrsync [选项] /src/ /dst将**/src目录内的所有数据**同步至/dst结果为/dst直接包含src的文件/子目录。3. rsync常用核心选项选项核心作用补充说明-a归档模式等价于rlptgoD保留文件所有属性递归、符号链接、权限、时间、属主/属组、设备文件等所有同步场景必加-n测试同步仅模拟同步过程不做实际修改适合先验证再执行真实同步--delete删除多余数据删除目标目录中源目录没有的内容实现源目录与目标目录完全一致-v详细输出显示同步的详细操作信息便于排查同步问题-z压缩传输传输过程中对数据进行压缩/解压减少带宽占用适合大文件/远程同步-r递归同步递归处理目录包含子目录及所有文件已包含在-a中无需单独添加4. rsync本地同步client主机[rootclient ~]# mkdir /src /dst #创建测试目录[rootclient ~]# touch /src/a.txt #创建测试文件[rootclient ~]# rsync -a /src /dst #将/src整个目录同步至/dst[rootclient ~]# ls /dst/ #查看同步结果输出src[rootclient ~]# rsync -a /src/ /dst #将/src目录里边的数据同步至/dst[rootclient ~]# ls /dst/ #查看同步结果输出a.txt src# 验证-av选项的增量同步作用[rootclient ~]# touch /src/b.txt #源目录/src中新增数据b.txt[rootclient ~]# touch /src/c.txt #源目录/src中新增数据c.txt[rootclient ~]# rsync -av /src/ /dst #将/src/里新增的数据同步至/dst目录-v显示传输过程# 示例输出sending incrementalfilelist ./ b.txt c.txt sent189bytes received57bytes492.00bytes/sec total size is0speedup is0.00# 验证--delete选项的完全同步作用[rootclient ~]# touch /dst/ddd.txt #目标目录/dst中新增数据ddd.txt[rootclient ~]# touch /src/sss.txt #源目录/src中新增数据sss.txt[rootclient ~]# ls /src /dst #查看源目录和目标目录现有数据# 输出/dst: a.txt b.txt c.txt ddd.txt src /src: a.txt b.txt c.txt sss.txt[rootclient ~]# rsync -av --delete /src/ /dst #删除目标多余数据实现完全同步# 示例输出sending incrementalfilelist deleting src/a.txt deleting src/ deleting ddd.txt ./ sss.txt sent172bytes received70bytes484.00bytes/sec total size is0speedup is0.005. rsync远程同步client主机操作分上行同步本地→远程和下行同步远程→本地服务端要求开启sshd服务、提供远程用户名/密码、本地与远程可通信。1上行同步client→server本地同步至远程[rootclient ~]# rsync -avz /boot/ root192.168.8.101:/opt #client远程同步至server-z压缩传输[rootserver ~]# ls /opt #server主机查看同步结果[rootclient ~]# touch /boot/test01.txt #client主机新增数据[rootserver ~]# touch /opt/server.txt #server主机新增多余数据[rootclient ~]# rsync -av --delete /boot/ root192.168.8.101:/opt #完全同步删除远程多余数据[rootclient ~]# ls /boot #client主机查看源数据[rootserver ~]# ls /opt #server主机查看同步结果与源数据一致2下行同步server→client远程同步至本地[rootclient ~]# rsync -avz root192.168.8.101:/boot/ /opt/ #server远程同步至client-z压缩传输[rootclient ~]# ls /opt #client主机查看同步结果[rootserver ~]# touch /boot/srv.txt #server主机新增数据[rootclient ~]# touch /opt/client.txt #client主机新增多余数据[rootclient ~]# rsync -av --delete root192.168.8.101:/boot/ /opt/ #完全同步删除本地多余数据[rootserver ~]# ls /boot #server主机查看源数据[rootclient ~]# ls /opt #client主机查看同步结果与源数据一致6. 核心小结掌握rsync本地同步的核心语法重点区分源目录加/与不加/的差异这是使用rsync的关键牢记-a为核心必加选项实现文件属性的完整保留远程同步分上行/下行结合-avz实现高效压缩同步--delete实现源与目标的完全一致。四、inotifyrsync实时同步1. 核心背景普通rsync为手动/定时同步时间间隔难以把控数据同步时效性差Linux内核自带inotify机制提供事件响应式的文件系统通知机制可实时监控目录/文件的变化如创建、删除、修改需安装inotify-tools控制工具含inotifywait/inotifywatch才能调用inotify机制实现监控结合rsync可实现数据变化即触发同步的实时效果是生产环境数据实时备份的核心方案。2. 源码编译安装inotify-tools工具client主机实时同步依赖inotify-tools以下为完整的编译安装命令与前文一致保留原代码[rootclient ~]# dnf -y install gcc gcc-c make #安装依赖包[rootclient ~]# tar -xf inotify-tools-3.13.tar.gz -C /usr/src/ #1.解压源码包至/usr/src/[rootclient ~]# cd /usr/src/inotify-tools-3.13/ #切换解压目录[rootclient inotify-tools-3.13]# ./configure #2.初始化生成Makefile[rootclient inotify-tools-3.13]# make #3.编译[rootclient inotify-tools-3.13]# make install #4.编译安装[rootclient inotify-tools-3.13]# ls /usr/local/bin/inotifywa* #查看是否安装成功验证程序存在3. inotifywait监控工具client主机inotifywait是inotify机制的核心监控工具用于实时捕获目录/文件的变化事件命令格式inotifywait [选项] 目标目录1inotifywait常用选项选项核心作用-m持续监控-r递归监控-q减少输出-e指定事件2inotifywait监控实操双窗口操作# 第一个窗口执行监控命令持续递归静默监控/opt目录[rootclient ~]# inotifywait -mrq /opt/ #第一个窗口监控/opt变化# 第二个窗口对/opt执行写操作触发监控事件[rootclient ~]# touch /opt/a.txt #第二个窗口在/opt目录中创建a.txt文件触发create创建动作# 第一个窗口立即给出监控提示输出结果/opt/ CREATE a.txt /opt/ OPEN a.txt /opt/ ATTRIB a.txt /opt/ CLOSE_WRITE,CLOSE a.txt4. inotifyrsync实时同步完整实现client→server核心思路SSH免密认证避免同步输密码 Shell脚本监控同步 后台运行不占用终端实现client主机/boot目录实时同步至server主机/opt目录步骤如下1前置条件client主机实现无密码远程连接server主机[rootclient ~]# ssh-keygen #生成SSH密钥对一路回车默认生成~/.ssh/id_rsa私钥、id_rsa.pub公钥[rootclient ~]# ssh-copy-id root192.168.8.101 #将公钥拷贝至server主机root192.168.8.101s password:123456#输入server主机root密码输入无回显[rootclient ~]# ssh root192.168.8.101 #远程连接验证无需密码即为成功[rootserver ~]# exit #退出server主机2编写Shell脚本实现监控实时同步[rootclient ~]# vim /root/inotifywait.sh #编写shell脚本# 脚本完整内容保留原代码无删减#!/bin/bashwhileinotifywait-rqq/boot/#监控/boot目录变化-rqq表示递归静默模式dorsync-az--delete/boot/ root192.168.8.101:/opt/#触发变化后执行实时同步实现完全一致done[rootclient ~]# chmod x /root/inotifywait.sh #为脚本赋予可执行权限x权限[rootclient ~]# /root/inotifywait.sh #后台运行脚本表示不占用当前终端3验证实时同步效果[rootclient ~]# touch /boot/haha.txt #在client被监控的/boot目录下增加数据自动触发同步[rootserver ~]# ls /opt #server主机验证/opt目录中已实时出现haha.txt同步成功5. 核心小结理解inotify机制的核心作用事件响应式的实时文件监控区别于传统的定时轮询掌握inotifywait核心选项的使用-mrq为最常用的监控组合选项实现实时同步的关键是SSH免密认证避免同步过程中手动输入密码Shell脚本通过while循环实现“监控事件→触发同步”的自动化实现脚本后台运行不占用终端。五、整体课程核心总结本次Day06内容为Linux云计算/运维必备的核心实操技能四大模块层层递进从基础的远程文件传输到高级的实时数据同步所有操作均基于生产环境需求设计核心掌握要点scp远程拷贝掌握上传/下载完整命令牢记目录拷贝加-r理解SSH加密传输的特性能完成本地与远程的文件/目录双向传输源码编译安装掌握6步标准流程能独立配置本地YUM仓库、安装编译依赖理解各步骤的核心作用可完成开源软件的自定义安装rsync同步掌握本地/远程同步的完整命令区分源目录加/与不加/的差异熟记核心选项-a/--delete/-z理解增量拷贝的优势能实现源与目标的高效同步/完全同步inotifyrsync实时同步掌握inotifywait监控工具的使用能独立配置SSH免密认证编写简单的Shell脚本实现“监控→触发同步”理解生产环境实时数据备份的核心逻辑。