Rsync不仅可以远程同步数据(类似于scp [1]),当然还可以本地同步数据(类似于cp),但不同于cp或scp的一点是,rsync不像cp/scp一样会覆盖以前的数据(如果数据已经存在),它会先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉。如果您的linux没有rsync命令请使用 yum install -y rsync 安装。
[root@wagskun ~]# rsync -av /etc/passwd /tmp/1.txt
sending incremental file list
passwd
sent 2316 bytes received 31 bytes 4694.00 bytes/sec
total size is 2242 speedup is 0.96
[root@wagskun ~]# rsync -av /etc/passwd root@192.168.1.73:/tmp/1.txt
rsync的命令格式
rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync常用选项
- -a包含-rtplgoD
- -r同步目录时要加上,类似cp时的-r选项
- -v同步时显示一些信息,让我们知道同步的过程
- -l保留软链接
- -L加上该选项后,同步软链接时会把源文件给同步
- -p保持文件的权限属性
- -o保持文件的属主
- -g保持文件的属组
- -D保持设备文件信息
- -t保持文件的时间属性
- --delete删除DEST中SRC没有的文件
- --exclude过滤指定文件,如--exclude "logs"会把文件名包含logs的文件或目录过滤掉,不同步
- -P显示同步过程,比如速率,比-v更加详细
- -u加上该选项后,如果DEST中的文件比SRC新,则不同步
- -z传输时压缩
目录的同步,约定源目标目录与目标目录后面都加”/”反斜杠
[root@wagskun ~]# rsync -av /root/111/ /tmp/111_dest/
sending incremental file list
created directory /tmp/111_dest
./
1.txt
2.txt
3.txt
sent 192 bytes received 72 bytes 528.00 bytes/sec
total size is 0 speedup is 0.00
用-L同步软链接源文件
[root@wagskun ~]# rsync -avL /root/111/ /tmp/111_dest/
delete 删除目标目录多余的文件
[root@wagskun ~]# rsync -avL --delete /root/111/ /tmp/111_dest/
sending incremental file list
./
deleting new.txt
sent 75 bytes received 15 bytes 180.00 bytes/sec
total size is 0 speedup is 0.00
–exclude 过滤
[root@wagskun ~]# rm -rf /tmp/111_dest/*
[root@wagskun ~]# rsync -avL --exclude "*.txt" /root/111/ /tmp/111_dest/
sending incremental file list
./
sent 29 bytes received 15 bytes 88.00 bytes/sec
total size is 0 speedup is 0.00
- -P显示同步过程,比如速率,比-v更加详细
[root@wagskun ~]# !rm
rm -rf /tmp/111_dest/*
[root@wagskun ~]# rsync -avP /root/111/ /tmp/111_dest/
sending incremental file list
1.txt
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=2/4)
2.txt
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=1/4)
3.txt
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=0/4)
sent 189 bytes received 69 bytes 172.00 bytes/sec
total size is 0 speedup is 0.00
-u 如果目标文件比较新,则不同步
[root@wagskun ~]# rsync -avPu /root/111/ /tmp/111_dest/
sending incremental file list
sent 72 bytes received 12 bytes 168.00 bytes/sec
total size is 0 speedup is 0.00
rsync通过ssh同步
- rsync -av test1/ 192.168.133.132:/tmp/test2/
- rsync -av -e "ssh -p 22" test1/ 192.168.133.132:/tmp/test2/
- rsync通过服务的方式同步
- 要编辑配置文件/etc/rsyncd.conf
- 启动服务rsync --daemon
- 格式:rsync -av test1/ 192.168.133.130::module/dir/
推文件
[root@wagskun ~]# rsync /etc/passwd 192.168.179.129:/tmp/wang.txt
The authenticity of host '192.168.179.129 (192.168.179.129)' can't be established.
ECDSA key fingerprint is 01:03:e4:83:ca:67:a8:15:c7:df:ec:7c:3f:de:e5:d6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.179.129' (ECDSA) to the list of known hosts.
root@192.168.179.129's password:
[root@wagskun ~]#
远程的主机也需要安装rsync
拉文件
[root@wagskun ~]# rsync -avP 192.168.179.129:/tmp/wang.txt /tmp/123.txt
root@192.168.179.129's password:
receiving incremental file list
wang.txt
2242 100% 2.14MB/s 0:00:00 (xfer#1, to-check=0/1)
sent 30 bytes received 2323 bytes 522.89 bytes/sec
total size is 2242 speedup is 0.95
指定端口-e "ssh -p 端口号"
[root@wagskun ~]# rsync -avP -e "ssh -p 22" /etc/passwd 192.168.179.129:/tmp/wang.txt
root@192.168.179.129's password:
sending incremental file list
passwd
2242 100% 1.47MB/s 0:00:00 (xfer#1, to-check=0/1)
sent 86 bytes received 55 bytes 25.64 bytes/sec
total size is 2242 speedup is 15.90