rsync工具介绍

  • rsync文件同步工具,支持本机到本机的文件同步,类似cp不同的是它是支持增量更新同步,只同步新更新的文件。
[root@akuilinux02 ~]# rsync -av /etc/passwd /tmp/1.txt
sending incremental file list
passwd
sent 938 bytes  received 35 bytes  1,946.00 bytes/sec
total size is 846  speedup is 0.87
  • rsync还支持远程机器之间的文件同步更新
[root@akuilinux02 ~]# rsync -av /etc/passwd root@192.168.21.129:/tmp/1.txt
root@192.168.21.129's password: 
sending incremental file list
sent 45 bytes  received 12 bytes  6.71 bytes/sec
total size is 846  speedup is 14.84
这里的root@可以不加,默认当前终端的用户一样
  • rsync的格式
    • rsync [OPTION] … SRC DEST,本机之间同步
    • rsync [OPTION] … SRC [user@]host:DEST,从本机远程同步。这里的root@可以不加,默认当前终端的用户一样
    • rsync [OPTION] … [user@]host:SRC DEST,从远程同步到本机
    • rsync [OPTION] … SRC [user@]host::DEST,
    • rsync [OPTION] … [user@]host::SRC DEST,

rsync常用选项

  • -a 包含-rtplgoD
  • -r 同步目录时要加上,类似cp时的-r选项
  • -v 同步时显示一些信息,让我们知道同步的过程
  • -l 保留软连接
  • -L 加上该选项后,同步软链接时会把源文件给同步(把软连接文件换成真正的文件)
  • -p 保持文件的权限属性
  • -o 保持文件的属主,如果目标主机没有这个用户则显示uid
  • -g 保持文件的属组
  • -D 保持设备文件信息
  • -t 保持文件的时间属性
  • --delete 删除DEST中SRC没有的文件
  • --exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步,支持通配
[root@akuilinux02 111]# rsync -avL --exclude "*.txt" --exclude "aming*" /root/111/ /tmp/111_dest/
sending incremental file list
created directory /tmp/111_dest
./
1.tx1
1.txt.swp
22323
222/
sent 258 bytes  received 120 bytes  756.00 bytes/sec
total size is 0  speedup is 0.00
  • -P 显示同步过程,比如速率,比-v更加详细
  • -u 加上该选项后,如果DEST中的文件比SRC新,则不同步,对比mtime,不会发生旧的覆盖新的文件的情况。
  • -z 传输时压缩,同步前压缩,同步后解压,节省带宽资源

rsync通过ssh方式同步

  • 当ssh端口是默认22时
[root@akuilinux02 111]# rsync -av /etc/passwd 192.168.21.128:/tmp/1.txt 
sending incremental file list
passwd
sent 938 bytes  received 35 bytes  1,946.00 bytes/sec
total size is 846  speedup is 0.87
  • 当ssh端口不是默认的端口时
[root@akuilinux02 111]# ssh -p 22 192.168.21.128
Last login: Mon May 14 20:11:54 2018 from 192.168.21.1
[root@akuilinux01 ~]# 登出
Connection to 192.168.21.128 closed.
[root@akuilinux02 111]# rsync -avP  -e "ssh -p 22" /etc/passwd 192.168.21.128:/tmp/1.txt 
sending incremental file list
passwd
            846 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
sent 938 bytes  received 35 bytes  1,946.00 bytes/sec
total size is 846  speedup is 0.87
[root@akuilinux02 111]# rsync -avP  -e "ssh -p 22" 192.168.21.128:/tmp/1.txt /tmp/3.txt
receiving incremental file list
1.txt
            846 100%  826.17kB/s    0:00:00 (xfr#1, to-chk=0/1)
sent 43 bytes  received 937 bytes  1,960.00 bytes/sec
total size is 846  speedup is 0.86