说明
rsync 的目的是实现 本地主机 和 远程主机 上的 文件同步
默认当 文件大小 改变、或 修改时间 改变,就认为需要同步
同步方式
- 本地发送到远程
- 远程下载到本地
- 实现本地不同路径下文件的同步
与 scp的区别
在本地电脑A,不能 将 远程电脑B 的文件 同步到 远程电脑C ,scp可以实现发送文件
第一次使用
rsync同步文件,与scp类似,都是将 所有文件 发送 或 下载再次使用
rsync同步文件,只将 差异文件 发送 或 下载,scp是发送所有文件
安装
centos
yum install -y rsync
语法
rsync -av 本地文件路径 用户名@ip:远端保存目录
解释:
-r:表示递归,即包含子目录-a:归档模式拷贝。递归同步,还可以同步元信息(比如修改时间、权限等),可替代-r-v:显示复制过程
更多参数说明,见:
http://www.ruanyifeng.com/blog/2020/08/rsync.html
例子
同步
执行下面命令:
rsync -av /program/jdk1.8.0_202 root@hadoop3:/program
将本地 /program/jdk1.8.0_202 目录 同步到远程 /program/ 目录
rsync 命令不需要事先在 远端电脑 创建 /program 文件夹
注意
不要像下面这种:
rsync -av /program/jdk1.8.0_202 root@hadoop2:/program/jdk1.8.0_202
在远端电脑路径指定 jdk1.8.0_202,否则会将 本地 jdk1.8.0_202 同步到 远程 /program/jdk1.8.0_202/jdk1.8.0_202 目录下
如果要执行 远端文件夹名,可以用下面这种,本地路径后面多了一个 /:
rsync -av /program/jdk1.8.0_202/ root@hadoop2:/program/jdk1.8.0_202
查看
登录 远端电脑,查看 /program 文件夹
cd /program
ll
可以看到 jdk1.8.0_202 目录
测试同步差异文件
登录 hadoop3 虚拟机,删除 /program/jdk1.8.0_202/bin 目录
rm -rf /program/jdk1.8.0_202/bin
再次同步
登录 hadoop1 虚拟机,执行下面命令:
rsync -av /program/jdk1.8.0_202 root@hadoop3:/program/
只同步 bin 目录下的文件
例子
可以使用 * 通配符,同步某目录下的所有文件
rsync -av /program/* root@hadoop3:/program/