rsync简介
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync”算法,可以将一个客户机和远程文件服务器之间的文件同步,也可以在本地系统中将数据从一个分区备份到另一个分区上。如果rsync在备份过程中出现了数据传输中断,恢复后可以继续传输不一致的部分。rsync可以执行完整备份或增量备份。
rsync特点
1.可以镜像保存整个目录树和文件系统;
2.可以很容易做到保持原来文件的权限、时间、软硬链接;无须特殊权限即可安装;
3.可以增量同步数据,文件传输效率高,因而同步时间短;
4.可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
5.支持匿名传输,以方便进行网站镜像等;
6.加密传输数据,保证了数据的安全性;
rsync优点与缺点
与传统的cp、tar备份方式对比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如,定期地备份文件服务器数据到远端服务器,对本地磁盘定期进行数据镜像等。
但是随着系统规模的不断扩大,rsync的缺点逐渐被暴露了出来。首先,rsync做数据同步时,需要扫描所有文件后进行对比,然后进行差量传输。如果文件很大,扫面文件是非常耗时的,而且发生变化的文件往往是很少一部分,因此rsync是非常低效的方式。其次,rsync不能实时监测、同步数据,虽然它可以通过Linux守护进程的方式触发同步,但是两次触发动作一定会有时间差,可能导致服务器端和客户端数据出现不一致
rsync的工作模式/格式
1.模式:拷贝本地文件
格式:rsync[OPTION]... SRC DEST
例子:rsync –av /tmp/1.txt /test
把本地/tmp/1.txt拷贝到本地/test目录下
2.模式:将本地机器的内容拷贝到远程机器
格式:rsync[OPTION]... SRC [[email protected]]HOST:DEST
例子:rsync –av/tmp/1.txt 192.168.1.1:/tmp
把本地/tmp/1.txt拷贝到远程主机1.1的/tmp目录下
3.模式:将远程机器的内容拷贝到本地机器
格式:rsync [OPTION]...[[email protected]]HOST:SRC DEST
例子:rsync –av192.168.1.1:/tmp/1.txt /tmp
把远程主机1.1的/tmp/1.txt拷贝到本地/tmp目录下
4.模式:从远程rsync服务器中拷贝文件到本地机器
格式:rsync[OPTION]... [[email protected]]HOST::SRC DEST
例子:rsync –av192.168.1.1::a/1.txt /tmp
把远程rsync服务器a模块下的1.txt拷贝到本地/tmp目录下
5.模式:从本地机器拷贝文件到远程rsync服务器中
格式:rsync[OPTION]... SRC [[email protected]]HOST::DEST
例子:rsync –av/tmp/1.txt 192.168.1.1::a/tmp
把本地/tmp/1.txt拷贝到远程rsync服务器a模块下的/tmp目录
6.模式:列出远程机的文件列表
格式:rsync[OPTION]... rsync://[[email protected]]HOST[:PORT]/SRC [DEST]
例子:rsync –av rsync://192.168.1.1/tmp
列出远程主机1.1的/tmp目录
rsync参数
-a 1. 相当于使用了-rlptgoD这一坨选项
2.以打包的方式传输文件,并保持所有文件属性
3.-a无法同步硬链接,如果有这方面需求,要加上-H选项
-v 显示详细的传输过程
-r 同步文件夹要加上-r
-l rsync默认是不支持软链接拷贝的,加上-l参数才能拷贝软链接,如果不加该选项会跳过软链接的拷贝
-L 不直接拷贝软链接,而是拷贝软链接指向的具体文件
-p 保持权限,比如本地传输1.txt到远端,如果远端已经有1.txt这个文件了,就只会同步内容,不会改变远端1.txt的权限
-P 同步过程中显示进度(Progress)
-t 同步时间(atime/ctime/mtime),比如本地传输1.txt到远端,如果远端已经有1.txt这个文件了,就会改变远端1.txt的时间,同步本地1.txt的时间
-g 同步所属组(group)
-o 同步所属主(owner)
-u 仅仅进行更新,比如本地传输1.txt到远端,如果远端已经有1.txt这个文件了,就直接跳过1.txt的同步,不管内容是否一致
-D 原文解释是“preservedevices(root only)”,从字面意思看,就是保持设备文件的原始信息。(没有实际体验过它的好处,所以没有太多发言权)
-z 压缩之后再传输(注意并不是修改为压缩文件,还是源文件)
-e 指定使用rsh、ssh的方式连接。如果远程机器sshd端口并非是22,可以用rsync -e"ssh -p xxx"来指定用别的端口连接
--delete 一锅端把源端的数据拷贝到目的端,即相当于把目的端的数据全部替换为源端的数据(类似替换而不是同步了)
--exclude 不同步哪些文件,写法:--exclude=”test”即不同步包含test关键字的文件(注意必须完全匹配关键字,如果有te文件/tes文件/test1文件都不会同步)