
一、先理解 rsync 最常见的使用目标
在实际工作里,大多数人第一次使用 rsync,并不是为了做复杂的服务化配置,而是为了完成这些任务:
- 把某个文件推送到另一台机器
- 把某个目录同步到远端
- 从远端把文件拉回本地
- 比
scp更高效地重复同步目录内容
所以学习 rsync 命令时,可以先抓住两种最常见的模式:
- 本地模式
- 远程模式
二、rsync 本地模式怎么用
本地模式示例如下:
rsync -a /etc/ /tmp/
rsync -a /etc/ /opt/
这表示把本机的 /etc/ 内容同步到本机其他目录。
2.1 本地模式适合什么场景
本地模式更多用于:
- 临时测试命令效果
- 在同一台服务器上复制目录内容
- 观察 rsync 对目录结构的处理方式
在企业环境里,它不是主角,但很适合用来入门和验证参数。
三、为什么 /etc 和 /etc/ 不一样
这是 rsync 新手非常容易忽略的一个细节,这里也特别强调了这点。
3.1 /etc
/etc 表示:
- 目录本身
- 以及目录里的内容
3.2 /etc/
/etc/ 表示:
- 只同步
/etc/目录下面的内容
也就是说,最后这个斜杠会直接影响同步后的目录结构。实际使用 rsync 时,很多“目录层级不对”的问题,往往就是因为这里写错了。
四、rsync 远程模式的核心格式
这里给出了一个很清晰的通用格式:
rsync -a 源文件 目标
在远程模式里,可以有两种最常见的方向:
- 推送:本地 -> 远端
- 拉取:远端 -> 本地
4.1 推送格式
rsync -a /etc/hostname root@10.0.0.31:/tmp
这表示把当前机器上的 /etc/hostname 推送到远端主机 10.0.0.31 的 /tmp 目录。
4.2 拉取格式
rsync -a root@10.0.0.31:/etc/hosts /opt/
这表示从远端主机上获取 /etc/hosts 文件,拉取到本地 /opt/ 目录。
五、rsync 推送文件和目录的实战示例
5.1 推送单个文件
示例是:
rsync -a /etc/hostname root@10.0.0.31:/tmp
这是最适合初学者上手的第一类命令,因为它结构简单、结果直观。
5.2 推送整个目录
示例如下:
# 推送第1次全量
rsync -av /etc root@10.0.0.31:/tmp
# 推送第2次发现没有推送
rsync -av /etc root@10.0.0.31:/tmp
# 创建文件再次推送
touch /etc/lidao.txt
rsync -av /etc root@10.0.0.31:/tmp
这组示例正好体现了 rsync 的增量特性:
- 第一次同步时,数据会整体传过去
- 第二次如果没有变化,rsync 不会重复传输
- 当目录里新增了文件,再执行时只同步发生变化的内容
这就是它比 scp 更适合重复同步目录的原因。
六、rsync 和 scp 在目录传输中的差异
这里在 rsync 示例后,又给出了一条 scp 命令:
scp -r /etc/ root@10.0.0.31:/opt/
其中:
-r表示递归传输目录
6.1 scp 的特点
scp 的优点是简单直接,临时传输很方便。
但它的缺点也很明显:
- 更偏一次性复制
- 不具备 rsync 那样明显的增量同步优势
6.2 rsync 的优势
对于需要反复执行的目录同步任务,rsync 更适合,因为它:
- 支持增量传输
- 能减少重复传输的数据量
- 更适合和脚本、定时任务结合
七、推送和拉取命令怎么快速判断不写反
判断方式其实很简单,永远先问自己两个问题:
1、我当前在谁的机器上执行命令?
2、我要的数据现在在哪里?
如果数据在当前机器,就通常是“推”;如果数据在远端机器,就通常是“拉”。
你可以把这条原则记成一句话:
谁当前执行命令,谁就是视角起点。
八、rsync 命令上手时最值得先练的几组命令
如果要练手,建议从下面几类命令开始:
8.1 本地目录同步
rsync -a /etc/ /tmp/
8.2 推送单个文件
rsync -a /etc/hostname root@10.0.0.31:/tmp
8.3 推送目录并观察增量效果
rsync -av /etc root@10.0.0.31:/tmp
touch /etc/lidao.txt
rsync -av /etc root@10.0.0.31:/tmp
8.4 拉取远端文件
rsync -a root@10.0.0.31:/etc/hosts /opt/
把这几组命令练熟之后,后面再接守护进程模式、定时备份案例和实时同步方案,就会顺很多。
九、小结
学习 rsync 命令的关键,不是一次性记住所有参数,而是先把下面几件事练熟:
- 本地模式怎么写
- 远程模式怎么写
- 推送和拉取怎么区分
/etc和/etc/的差别是什么- rsync 和 scp 在重复同步场景里谁更合适
当这些基本点掌握之后,rsync 就不再只是“一个命令”,而会变成你在备份和同步场景里的常用工具。







暂无评论内容