记录一下rsync的使用方法-实测

基本功能

rsync是一个文件传输程序,能够通过快速差分算法进行有效的远程更新。可以通过增量同步的方式递归备份一个目录和目录下面文件到另一台机器上。

工作原理

a、客户端构造FileList,FileList包含了需要与服务器同步的所有文件信息对name->id
(id用来唯一表示文件例如MD5)

b、客户端将FileList发送到服务器。

c、服务器上rsync处理客户端发过来的FileList,构建新的NewFileList。
其中根据MD5值比较,删除服务器上已经存在的文件信息对,只保留服务器上不存在或变化的文件。

d、客户端得到服务器发送过来的NewFileList,然后把NewFileList中的文件重新传输到服务器。

基本用法:

  rsync [OPTION]... SRC [SRC]... DEST
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
  or   rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
  or   rsync [OPTION]... [USER@]HOST:SRC [DEST]
  or   rsync [OPTION]... [USER@]HOST::SRC [DEST]
  or   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

分为客户端和服务器端,服务器端可以是rsync服务程序,也可以是sshd服务端。一般用sshd比较方便,无需配置,直接使用。下面都是通过sshd测试的情况。
比如需要把本机的/backup/目录复制到192.168.99.10(目的主机)的/backup/目录,可以使用如下命令,如果192.168.99.10的/backup/目录为空,则会把本机的所有文件递归复制过去,如果不为空,则递归对比本机目录的文件和目的主机的对应文件是否相同,相同则忽略,不同或者目的主机不存在对应文件,则把本机文件复制过去:

rsync -av /backup/ root@192.168.99.10:/backup/

如果192.168.99.10上的ssh服务的监控端口不是22,可以使用如下命令:

rsync -e "ssh -p 50022" -av /backup/ root@192.168.99.10:/backup/

其中-a是代表了多个选项:-rlptgoD,-a是为了使用方便的简写。各个选项的含义:
-r,–recursive 对源目录进行递归复制,如果不加此选项,只能对单个文件进行复制。
-l,如果遇到源目录中的文件是一个符号链接,会在目的目录里创建一个符号链接,源和目的主机上的两个符号链接指向的文件路径是一致的,相当于按照源目录的符号连接的指向,在目的主机上操作一次ln -s ,所以实际上可能会不能复制成功或者目的主机和源主机的文件不一样。
-L,与-l相反,如果遇到源目录中的文件是一个符号链接,那么就把它链接指向的文件复制过去。
-p,保留权限,实测不加这个参会也会保留权限。
-t,保留修改时间,这个参数必须使用,如果不使用这个参数,rsync复制到目的主机的文件的修改时间会变成文件复制过去时的当前时间,与源文件的修改时间不一致,这样下次再使用一次rsync同步命令时,还会重复传送所有文件(因为rsync默认使用修改时间和文件大小来判断文件有没有变化)。
-g,保留文件的归属组。
-o,保留文件的归属用户,实际上是保留uid,如果目的主机上不存在对应用户,ls -l 查看文件详细时用户名那里显示的是uid。
-D,–devices,保留设备文件 (仅限超级用户),比如/dev/sda这种文件也会被复制过去,与–copy-devices对应,–copy-devices是把设备文件对应的磁盘数据都当作块文件复制过去。

对各个选项的实测

-avz是一般常用的选项缩写,大部分基本同步需求可以满足:

rsync -avz src_dir dest_dir

另外如果复制文件时只需要根据文件名和文件大小来判断是不是同一个文件,而忽略文件的时间属性的话可以使用:

rsync -avz --size-only src_dir dest_dir 

或者

rsync -avz --ignore-times  src_dir dest_dir

如果需要根据md5值来判断是不是同一个文件,而不是使用默认的文件大小和修改时间的话可以使用下面的命令:

rsync -avz --checksum src_dir dest_dir

–delete:删除那些DST中存在而在SRC中没有的文件。
在目的主机上创建一个文件,源主机上没有,然后加–delete参数执行同步

 [root@c215 ~]# touch /tmp/a/xxxx

在这里插入图片描述

在这里插入图片描述

-z, –compress传输文件时进行压缩传输,可以减小带宽占用。比如下面这个测试,不压缩时发送了46M的数据,使用了-z参数后发送了2M的数据。
在这里插入图片描述
-A:–acls 保留ACL属性文件,需要配合–perms。

**

未完待续。

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值