rsync是类unix系统下的数据镜像备份工具,remote sync的简写。它的特性如下:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
服务器端配置:
安装rsync和xinetd
# yum -y install rsync xinetd
修改rsync服务配置文件
# vim /etc/xinetd.d/rsync
将如下代码
service rsync { disable = no flags = IPv6 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
中的 disable = yes 改成 disable = no
启动 xinetd
# service xinetd start
防火墙中打开873端口
# vim /etc/sysconfig/iptables
添加如下规则
-A INPUT -m state --state NEW -m tcp -p tcp -s *.*.*.* --dport 873 -j ACCEPT(其中*.*.*.*为rsync客户端IP地址)
重启防火墙
# service iptables restart
rsync服务端配置
# vim /etc/rsyncd.conf
复制以下内容并按照自己实际情况修改配置
uid = nobody gid = nobody use chroot = no max connections = 4 timeout = 600 #motd file = /etc/rsyncd.motd pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log hosts allow = *.*.*.* hosts deny = * [www] uid =root gid = root path = /www/html ignore errors read only = yes list = no auth users = rsync secrets file = /etc/rsyncd.passwd [mysql] path = /www/backup/mysql ignore errors read only = yes list = no auth users = rsync secrets file = /etc/rsyncd.passwd
设置允许访问的用户名密码
# vim /etc/rsyncd.passwd
格式为用户名:密码,如下
rsync:123456
更改密码文件正确的权限
# chmod 600 /etc/rsyncd.passwd
配置开机启动
# chkconfig xinetd on
客户端配置
安装rsync
# yum -y install rsync
配置客户端密码
# vim /etc/rsync.passwd
输入密码
123456
注意,客户端的密码文件只需要密码,而不需要用户名!
更改密码文件正确的权限
# chmod 600 /etc/rsync.passwd
执行异步同步操作
# rsync -vzrtopg --progress --delete --password-file=/etc/rsync.passwd rsync_user@*.*.*.*::rsync_module_name1 /var/backup
这个命令行中-vzrtopg里的v是verbose,
z是压缩传输,
r是recursive,
topg都是保持文件原有属性如属主、时间的参数。
–progress是指显示出详细的进度情况,
–delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
后面的rsync_user@*.*.*.*::rsync_module_name1中,*.*.*.*为rsync服务器端的IP地址;之后的rsync_module_name1是模块名也就是在/etc/rsyncd.conf中自定义的名称;rsync_user是指定模块中指定的可以同步的用户名;最后的/var/backup是备份到本地的目录名。
将同步命令写为bash脚本
# vim /usr/local/sbin/rsync.sh
添加如下内容
#!/bin/bash rsync -vzrtopg --progress --delete --password-file=/etc/rsync.passwd rsync@*.*.*.*::backup /var/backup
给予rsync.sh可执行权限
# chmod +x /usr/local/sbin/rsync.sh
如果需要限制rsync传输的速度而不影响服务器正常访问,要加–bwlimit
命令如下
rsync -vzrtopg --bwlimit=100 --progress --delete --password-file=/etc/rsync.passwd rsync@*.*.*.*::backup /var/backup
–bwlimit=100代表限制传输速度是100KB
设定每天凌晨4点执行同步备份操作
# vim /etc/crontab
添加如下
0 4 * * * root /usr/local/sbin/rsync.sh
这样子就实现了rsync服务器与客户端的自动同步。