TOC
简介
Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。可使本地和远程两台或多台主机之间的数据快速复制同步镜像、远程备份的功能。这个功能类似ssh自带的scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,Rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。一个rsync相当于scp、cp、rm,但是还优于他们每一个命令。
在同步备份数据时,默认情况下,Rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或者目录,当然也可以根据权限的,属主等属性的变化来进行同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的部分内容,所以,可以快速的实现数据的同步、备份。
Rsync的特性:
1.支持拷贝特殊文件如链接文件、设备等。
2.可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
3.可以做到保持原文件或目录的权限、时间、软硬链接、属主、属组等所有属性均不改变-p。
4.可以实现增量同步,即只同步变化的数据,因此数据传输效率很高。
5.可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。
6.可以通过socket(进程方式)传输文件和数据(服务端和客户端)。
7.支持匿名或认证的进程模式传输,可以实现方便安全的进行数据备份及镜像。
Rsync的工作方式:
1.单个主机本地之间的数据传输(此时类似于CP命令的功能)
2.借助rcp,ssh等通道来传输数据(此时类似于Scp命令的功能)
3.以守护进程(socket)的方式传输数据(这是Rsync自身重要的功能)
Rsync命令同步选项参数:
语法格式:
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
常用参数说明:
-v,--verbose:详细模式输出,传输时的进度等信息。
-z,--compress:传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩。
-a,--archive:归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgDl。
-r,--recursive:对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r。
-t,--times:保持文件时间信息。
-o,--owner:保持文件属主信息。
-p,--perms:保持文件权限。
-g,--group:保持文件属组信息。
-P,--progress:显示同步的过程及传输时的进度等信息。
-D,--devices:保持设备文件信息。
-l,--links:保留软链接。
-e,--rsh=COMMAND:使用的信道协议,指定替代rsh的shell程序。例如:ssh。
--exclude=PATTERN:指定排除不需要传输的文件模式。
--exclude-from=file(文件名所在的目录文件)
--bwlimit=PATE(限速) limit socket I/O bandwidth。
生产参数:-avz或者-vzrtopg。####本地传输模式(local-only mode)
本地主机模式示例
[root@node1 ~]# rsync -avzP /etc/hosts /tmp/ #本地模式,将hosts文件同步至/tmp目录
sending incremental file list
hosts
158 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 124 bytes received 31 bytes 310.00 bytes/sec
total size is 158 speedup is 1.02
远程RPC模式示例
推送
[root@node1 ~]# rsync -avzP -e 'ssh -p 22' /etc/hosts root@192.168.1.72:/tmp #将本地的hosts文件同步到远程主机的/tmp目录下
root@192.168.1.72's password:
sending incremental file list
hosts
sent 124 bytes received 31 bytes 44.29 bytes/sec
total size is 158 speedup is 1.02
拉取
[root@node1 ~]# rsync -avzP -e 'ssh -p 22' root@192.168.1.72:/tmp/hosts /root/ #将hosts文件从远程主机拉取到本地root家目录
root@192.168.1.72's password:
receiving incremental file list
hosts
158 100% 154.30kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 30 bytes received 129 bytes 45.43 bytes/sec
total size is 158 speedup is 0.99