什么是rsync:
rsync(remote sync) 是一个Unix及类Unix系统下的一个应用软件,是一个能实现主机与主机间数据远程同步的软件。rsync中一项与其他大部分类似程序或协议中所未见的重要特性是镜像对每个目标只需要一次传送,完成一次镜像copy后,在发后对同样的目录进行rsync时它只传输源文件和目标文件之间不一致的部分,这样可以大大节约带宽,所以rsync可以执行完整备份或增量备份。更棒的是,在所有风格的 UNIX 上都可以使用 rsync,包括 Mac OS X,所以很容易连接任何系统。
rsync常见的3种工作模式:
1、shell模式,也称为本地模式;使用方法与cp命令相似。
2、远程shell模式,利用SSH执行底层连接和传输;使用方法与scp命令相似。
3、服务器模式,rsync以守护进程方式运行,接收文件传输请求。在使用时,可以使用rsync命令把文件发送给守护进程,也可以向它请求文件。服务器模式非常适合创建中心备份服务器或项目存储库。
4、列表模式,与“ls”相似,会列出源的内容。
注:远程shell模式和服务器模式的差异在于,后者在源和目标名中使用两个冒号 (:)
rsync的命令使用规范:(摘自manpage)
rsync is a file transfer program capable of efficient remote update via a fast differencing algorithm.
rsync是一个高效可靠的文件传输程序,通过快速的差分算法实现数据的远程更新。
Usage: rsync [OPTION]... SRC [SRC]... DEST 本地模式的使用
or rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST 把本地资源通过一个特定的用户同步到远程主机上
or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST 把本地资源通过一个特定的用户同步到一个以服务器模式工作的rsync服务器上,这里用了两个冒号,DEST是指rsync服务器的模块名
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]
The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect to an rsync daemon, and require SRC or DEST to start with a module name.
使用一个冒号表示连接到远程shell,使用两个冒号和“rsync://”表示连接到一个以daemon运行的rsync服务器,以这种方式连接时“SRC”与"DEST"是模块的名称。
rsync命令的常用选项(OPTION):
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-l, --links 保留符号链结
-p, --perms 保留文件权限
-t, --times 保留文件时间戳
-g, --group 保留文件属组信息
-o, --owner 保留文件属主信息
-D, --devices 保留设备文件即特殊文件信息
-e, --rsh=COMMAND 指定替代rsh的shell程序
-z, --compress 对备份的文件在传输时进行压缩处理
--delete 删除目标目录下附加的文件,让目录目录与源目录保持一样
还可以使用两个选项监视传输的状态:--progress和--stats。
--progress 显示进度条
--stats 显示如何执行压缩和传输
实战演练部份:
实验环境:一台CentOS 6.4_x64主机和一台centos 5.10_x64 ,默认安装后rsync已安装,如果没有安装,用yum命令进行安装即可
nod1 ip:192.168.1.201
nod2 ip:192.168.1.200
rsync软件版本:[root@nod2 ~]# rpm -qa rsync
rsync-3.0.6-9.el6_4.1.x86_64
[root@nod1 ~]# rpm -qa rsync
rsync-3.0.6-4.el5_7.1
rsync的远程shell模式(可实现两个主机间目录、档案的同步):
在nod2上准备要同步到nod1上的目录
[root@nod2 ~]# mkdir rsyncdoc
[root@nod2 ~]# cp -R /etc/pam.d rsyncdoc/
[root@nod2 ~]# ls rsyncdoc/
pam.d
1、我们需要把nod2上的rsyncdoc目录同步到nod1的/root/test目录下
[root@nod2 ~]# rsync -rl /root/rsyncdoc/ root@192.168.1.201:/root/test
[root@nod1 ~]# ls test/
pam.d
[root@nod2 ~]# rsync -rl /root/rsyncdoc root@192.168.1.201:/root/test1
[root@nod1 ~]# ls test1
rsyncdoc
看见区别了吗?在同步目录时多了一个“/”与少一个“/”结果是不一样的。有“/”是同步rsyncdoc这个目录下的目录及档案,如果没有“/”是同步rsyncdoc这个目录。