登录    关于
马育民老师的博客

马育民的博客

QQ:65242847

linux rsync同步文件

说明

rsync 的目的是实现 本地主机远程主机 上的 文件同步

默认当 文件大小 改变、或 修改时间 改变,就认为需要同步

同步方式

  • 本地发送到远程
  • 远程下载到本地
  • 实现本地不同路径下文件的同步

与 scp的区别

  1. 在本地电脑A,不能 将 远程电脑B 的文件 同步到 远程电脑C ,scp可以实现发送文件

  2. 第一次使用 rsync 同步文件,与 scp 类似,都是将 所有文件 发送 或 下载

  3. 再次使用 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/

原文出处:http://malaoshi.top/show_1IX1tgTe4McS.html