CentOS Rsync 服务器与客户端同步配置

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服务器与客户端的自动同步。