一.什么是rsync
rsync(remote sync)是Linux系统的文件同步和数据传输工具。rsync使用“rsync算法”来使本地主机和远程主机之间的文件达到同步,它并不是每次都整份传送,rsync只传输源文件和目标文件之间不一致的部分,因此速度相当快。
rsync有如下特性:
○可以镜像保存整个目录树和文件系统。
○可以增量同步数据,文件传输效率高。
○可以保持原有文件的权限、时间等属性。
○加密传输数据,保证了数据的安全性。
○可以使用scp、ssh等方式传输文件,当然也可以直接通过socket连接。
○支持匿名传输。
二.rsync服务器的配置
系统环境:Centos 5.9
客户端IP地址:10.224.252.122
服务器IP地址:10.224.252.123
①定义rsync的配置文件
rsync的配置文件为/etc/rsyncd.conf,在安装完rsync时,默认是没有这个配置文件的,需要手动建立。rsyncd.conf参数包括全局参数和模块参数,模块参数定义了需要进行同步的目录,在配置文件中可以定义多个模块。配置文件的内容如下:
[root@localhost ~]# cat /etc/rsyncd.conf uid=nobody gid=nobody user chroot=no max connections=100 timeout=600 pid file=/var/run/rsyncd.pid lock file=/var/run/rsyncd.lock log file=/var/log/rsyncd.log [src] path=/usr/local/src comment=source ignore errors read only=no list=no hosts allow=10.224.252.0/255.255.255.0 auth users=jack secrets file=/etc/rsyncd.passwd
配置文件的选项含义如下:
uid=nobody,gid=nobody
指定进行备份操作的用户和用户组
user chroot=no
在rsyncc传输文件之前,不会chroot到path参数所指定的目录
max connections
指定rsync服务器的最大连接数
timeout
指定客户端的超时时间
pid file
指定rsync守护进程对应的pid文件路径
lock file
指定rsync服务器锁文件的位置
log file
指定rsync服务器日志文件的位置
[src]
定义一个模块的开始,src是模块的名称
path
指定需要同步目录的路径,这里指定的目录为/usr/local/src
comment
模块的描述信息
ignore errors
忽略一些无关的IO错误
read only=no
允许可读写
list=no
不允许列出目录
host allow
指定允许连接rsync服务器的客户端
auth users
指定进行认证的用户名
secrets file
指定密码文件的存放路径
②配置rsync服务器的密码文件
[root@localhost ~]# echo "jack:jack" > /etc/rsyncd.passwd [root@localhost ~]# chmod 600 /etc/rsyncd.passwd
③开启rsync服务
编辑/etc/xinetd.d/rsync文件,将“disable=yes”改为“disable=no”
service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
重新启动xinetd服务,使rsync服务生效
[root@localhost ~]# service xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ]
三.rsync客户端的配置
手动建立密码文件,在客户端只需要输入密码即可
[root@localhost ~]# echo "jack" > /etc/rsyncd.passwd [root@localhost ~]# chmod 600 /etc/rsyncd.passwd
四.利用rsync同步目录
[root@localhost ~]# rsync -vrztopg --progress /src [email protected]::src --password-file=/etc/rsyncd.passwd
在“-vrztopg”选项中,v表示详细模式输出,r表示对子目录以递归形式处理,z表示对备份文件在传输时进行压缩处理,t表示保持备份文件的时间信息,o表示保持备份文件的属主信息,p保持备份文件的权限信息,g表示保持备份文件的属组信息;“--progress”表示备份的过程;“--password-file”指定密码文件的位置。
查看rsync服务器上文件的同步情况
[root@localhost ~]# ls -l /usr/local/src total 4 drwxr-xr-x 2 nobody nobody 4096 Nov 30 10:08 src
将以上/src替换为/src/,我们看下会有什么区别?
[root@localhost ~]# rsync -vrztopg --progress /src/ [email protected]::src --password-file=/etc/rsyncd.passwd
查看rsync服务器上文件的同步情况
[root@localhost ~]# ls -l /usr/local/src/ total 50804 -rw-r--r-- 1 nobody nobody 106049 Nov 30 10:08 eaccelerator-0.9.6.1.tar.bz2 -rw-r--r-- 1 nobody nobody 6125771 Nov 30 10:06 httpd-2.2.8.tar.gz -rw-r--r-- 1 nobody nobody 68056 Nov 30 10:08 ImageMagick.tar.gz -rw-r--r-- 1 nobody nobody 86976 Nov 30 10:08 imagick-2.3.0.tgz -rw-r--r-- 1 nobody nobody 4984397 Nov 30 10:08 libiconv-1.14.tar.gz -rw-r--r-- 1 nobody nobody 1335178 Nov 30 10:08 libmcrypt-2.5.8.tar.gz -rw-r--r-- 1 nobody nobody 471915 Nov 30 10:07 mcrypt-2.6.8.tar.gz -rw-r--r-- 1 nobody nobody 35981 Nov 30 10:08 memcache-2.2.5.tgz -rw-r--r-- 1 nobody nobody 931437 Nov 30 10:08 mhash-0.9.9.9.tar.gz -rw-r--r-- 1 nobody nobody 23817441 Nov 30 10:05 mysql-5.1.47.tar.gz -rw-r--r-- 1 nobody nobody 645826 Nov 30 10:05 nginx-0.8.46.tar.gz -rw-r--r-- 1 nobody nobody 1285776 Nov 30 10:05 pcre-8.10.tar.gz -rw-r--r-- 1 nobody nobody 14778 Nov 30 10:08 PDO_MYSQL-1.0.2.tgz -rw-r--r-- 1 nobody nobody 201339 Nov 30 10:06 php-5.2.14-fpm-0.5.14.diff.gz -rw-r--r-- 1 nobody nobody 11783970 Nov 30 10:06 php-5.2.14.tar.gz
总结一下,如果源目录的末尾没有斜杠,就将指定的源目录复制到指定的目标目录中;如果源目录的末尾有斜杠,就会把指定的源目录中的内容复制到目标目录中,而不复制目录本身。目标目录的斜杠没有任何作用。