rsync是Unix系统下数据镜像备份工具,在局域网内同scp相比速度会更快,且在第二次以后做rsync时会比对通过rsync传输和接收两头的文件,可以实现增量备份,这样当我们在做大文件的数据备份时在使用rsync时会更有优势,当然在使用rsync的时候也可以指定使用ssh、scp或者是socket的方式来进行传输。至于rsync也可以作为daemon启动,所以我们平时在做备份服务中心服务器时多用于搭建rsync的服务,而需要备份的各个服务器做为rsync的客户端,每次需要备份时只需要往rsync的服务器上推送即可。
首先搭建rsync使用rsync时需要服务端和客户端都有安装rsync,在开源Unix系统下可以通过yum或者是apt或者是编译安装,如果是在DOS系统下可以下载相应的安装包,在DOS系统在服务端和客户端是2种分开的不同的安装包。在rsync做为daemon启动时默认指定的端口是tcp的873端口,当然也可以自行定义端口,rsync的服务端可以指定自行定义好的配置文件中的参数来启动:
[[email protected] ~]# vim /etc/rsyncd.conf uid = root gid = root #定义使用指定的用户、用户组传输 max connections=1 #最大客户端连接数,根据实际有多少个的客户端数量设置 address = 192.168.2.206 #绑定监听的ip,在实际生产环境中建议绑定到内网ip上 port = 873 #监听的tcp端口 exclude = lost+found/ #排除的文件或者目录 pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log lock file = /var/run/rsyncd.lock auth users = rsync_root #使用的定义使用rsync过程中使用的用户名 secrets file = /etc/rsyncd.passwd #定义使用rsync过程中使用的用户密码,用户密码可以写在自行定义的文件内 hosts allow = 192.168.2.0/24 #允许的IP或者是网段,多个ip或网段用空格隔开 use chroot = no #默认是yesrsync在传输文件以前首先chroot到path参数所指定的目录下。 #这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件 #除此之外如果是客户端那里通过保持文件属组信息传输过来的非root的文件uid和gid和rsync服务器上的uid、gid不同时是不会匹配上文件的正确属组,所以直接选no就好了 [192.168.2.203_backup] #定义rsync的模块,一般每台客户端有使用不同的配置时,可以使用的局部参数 comment= Used for testing rsync #注释说明 path = /data/backup/rsync_server/192.168.2.203 #备份到服务器本地路径 read only=no #关闭只读,即可读可写 transfer logging = yes #追加日志
在配置好rsync的服务端配置文件中的参数后,在刚才定义的secrets file内填上rsync传输过程中使用的用户名和密码,这里用户名和密码之间使用“:”隔开,“username:password”,在修改好后需要修改用户密码文件的权限,如下:
[[email protected] ~]# vim /etc/rsyncd.passwd rsync_root:123456 [[email protected] ~]# chmod 400 /etc/rsyncd.passwd
在配置好后就可以以daemon方式启动rsync,如果是在DOS系统下要注意在services.msc中开启rsync的服务:
[[email protected] ~]# rsync --daemon -4 --config=/etc/rsyncd.conf
这里的“-4”是指使用ipv4,在启动后注意需要在rsync服务器上开启873端口,这样rsync的服务端就搭建完成了,此时在客户端上就可以使用rsync推送需要备份的文件至rsync的服务端上了,当然如果在平时使用方便可以类似rsync的服务端上一样可以把rsync的密码填入自行定义的文件中在传输的时候使用password-file参数指定密码文件即可,在这里同rsync的用户密码类似在改后需要修改相应的权限,如果是在Linux下可以指定为隐藏文件,如下:
[[email protected] ~]# vim /root/.rsync.passwd 123456 [[email protected] ~]# chmod 400 /root/.rsync.passwd
此时在rsync的客户端上测试一下:
[[email protected] ~]# rsync -vzrLtopg --progress --delete --port=873 /data/backup --password-file=/root/.rsync.passwd [email protected]::192.168.2.203_backup
这里解释一下“--delete”表示删除那些DST中SRC没有的文件 。 会把目的文件中没有的文件删掉,这样可以保持rsync的服务端和客户端在一次镜像后目录中的所有文件保持一致,当然如果是仅需要增量备份而不删除时可以去掉“--delete”参数,而其他的参数中“-v”表示详细模式输出;“-z”表示对备份的文件在传输时进行压缩处理;“-r”表示对文件夹递归;“-L”表示把软链接转为真实目录文件,如果是要保持软链接就使用“-l”;“-t”表示保持文件时间信息;“-o”表示保持文件属主信息;“-p”表示保持文件权限;“-g”表示保持文件属组信息,其中需要注意的是在传输中“/data/backup”和“/data/backup/”两种是不同的,其中“/data/backup”表示传送到rsync服务器时包含backup目录,而后者“/data/backup/”只传送/data/backup目录下的所有文件不包括/data/backup目录,这个需要注意的,至于rsync的其他参数在这里就不做过多的说明了,需要的可以参看http://man.linuxde.net/rsync在里面有详细的说明。