2016年1月

rsync 安装配置

0) 检测是否安装rsync(关闭1、setenforce 0 2、service iptables stop)

rpm -qa|grep rsync
或 rpm -q rsync

如果已经安装的rsync版本较低,则可先卸载旧版本重新安装新版本

rpm -e rsync #卸载rsync

1) 服务器

(1) 安装rsync服务端

yum -y install rsync
yum -y install xinetd 
vi /etc/xinetd.d/rsync

将/etc/xinetd.d/rsync中的 disable = yes 改成 disable = no

然后启动 xinetd2.启动rsync依赖服务

/etc/init.d/xinetd start 或 service xinetd restart
chkconfig xinetd on
netstat -tuln #启动后用netstat查看是否开启了873端口

注意:如果服务器上装有防火墙记得要打开端口,默认端口是873

# telnet 127.0.0.1 873
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -p tcp -m tcp --dport 873 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 873 -j DROP

(2) rsync服务端配置

vi /etc/rsyncd.conf
uid=nobody
gid=nobody
user chroot=no
max connections=200
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
log file=/var/log/rsyncd.log
[backup]
path=/backup/
ignore errors
read only=no
list=no
hosts allow=211.101.12.128
#hosts allow=192.168.1.0/255.255.255.0
auth users=ccsec
secrets file=/etc/rsyncd.password

配置文件释义

uid=nobody #以什么身份运行rsync
gid=nobody
user chroot=no #不使用chroot
max connections=200 #最大连接数
pid file=/var/run/rsyncd.pid #指定rsync的pid文件
lock file=/var/run/rsyncd.lock #指定支持max connections参数的缩文件,默认值是/var/run/rsyncd.lock
log file=/var/log/rsyncd.log #指定rsync的日志文件,而不将日志发送给syslog
[backup] #这里是认证的模块名,在client端需要指定
path=/backup/ #需要做镜像的目录
ignore errors #可以忽略一些无关的io错误
read only=no #yes只读,no可读可写模式,数据恢复用no
list=no #是否列文件。true为允许列文件
hosts allow=211.101.12.128 #允许访问的服务器ip 可以设置多个,用英文状态下逗号隔开
#hosts allow=192.168.1.0/255.255.255.0
auth users=ccsec #授权帐号。认证的用户名,如果没有这行,则表明是匿名,多个用户用, 分隔
secrets file=/etc/rsyncd.password #密码文件位置,认证文件设置,设置用户名和密码

#host deny=* #黑名单

#exclude=/abc/ #忽略的目录

注:auth users=ccsec 必须是系统用户,且必须与 rsync 连接时的用户名 ccsec@hz0.cc 相同!{ 实测非系统用户(如test之类)或非当前rsync登录用户(即使是root)均无效!}

(3) 服务器端建立同步目录及密码文件

mkdir /backup
chmod -R 777 /backup/
touch /backup/test.sh
echo "ccsec:ccpass" > /etc/rsyncd.password
chmod 600 /etc/rsyncd.password

注:ccsec:ccpass 部分ccsec用户名与 /etc/rsyncd.conf 文件中 auth users 用户名相同,密码可任意设置。

2)备份机

(1) 1.安装rsync

yum -y install xinetd
yum install xinetd 

然后启动 xinetd2.启动rsync依赖服务

/etc/init.d/xinetd start 或 service xinetd restart
chkconfig xinetd on
2.备份机上建立密码文件rsyncd.password

echo "ccpass" > /etc/rsyncd.password
chmod 600 /etc/rsyncd.password

注:ccpass 密码与服务器端 /etc/rsyncd.password 文件中 ccsec:ccpass 部分的 ccpass 密码相同。

(2) 备份服务器端/backup目录至备份机/path目录 (daemon模式)

rsync -vzrtopg --delete ccsec@hz0.cc::backup /path --password-file=/etc/rsyncd.password

(3) 恢复备份机/path目录至服务器端/backup目录 (daemon模式)

rsync -vzrtopg --delete /path/ ccsec@hz0.cc::backup --password-file=/etc/rsyncd.password

(4) 备份服务器端/backup目录至备份机/path目录 (ssh模式)

rsync -av ccsec@hz0.cc:/backup /path

{可加 -z 参数压缩传输}

(5) 恢复备份机/path目录至服务器端/backup目录 (ssh模式)

rsync -av /path root@hz0.cc:/backup

注:rsync参数释义

{更多参数参考:Rsync命令参数详解}

-v 详细
-z 压缩
-r 递归

-t, --times 保持文件时间信息

-o, --owner 保持文件属主信息

-p, --perms 保持文件权限

-g, --group 保持文件属组信息

-D, --devices 保持设备文件信息 {本例中未使用}

-l, --links 保留软链结 {本例中未使用}

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD {一个-a参数搞定上述n多参数~}

-u 只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器的时钟的同步。{涉及时间同步,所以白菜不建议加入此参数!}

–-delete 指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。

–-progress 指显示出详细的进度情况 {本例未使用}

--password-file 指定密码文件

rsync_user@hz0.cc::rsync_module_name1中,之后的rsync_module_name1是模块名,也就是在/etc/rsyncd.conf中自定义的名称,rsync_user是指定模块中指定的可以同步的用户名。

3)备份触发条件 (备份机)

(1) 定时执行 crontab -e

crontab -e
/usr/bin/rsync -vzrtopg –-progress --delete --password-file=/etc/rsyncd.password ccsec@hz0.cc::backup /path

参考:

rsync -vzrtopg --delete ccsec@hz0.cc::backup /path/rsync_bak/`date +%Y%m%d` --password-file=/etc/rsyncd.password >> /path/rsync_log/`date +%Y%m%d`.log

{使用rsync备份自动化备份数据 http://cndefu.blog.163.com/blog/static/593931882008102935844613/

(2) 文件变动执行

rsync + inotify实现实时同步

参考地址:http://blog.csdn.net/yuhui2f/article/details/7688946

4)rsync管理命令集 (备份机)

(1) 显示本机(备份机端)目录内容(第一层)

rsync /path/

(2) 显示本机(备份机端)目录内容(递归显示)

rsync -r /path/

(3) 显示远程主机(服务器端)目录内容 (daemon模式)

rsync ccsec@hz0.cc::backup --password-file=/etc/rsyncd.password

(4) 显示远程主机(服务器端)目录内容 (ssh模式)

rsync ccsec@hz0.cc:/backup/

{/backup列出文件夹本身信息,/backup/列出文件夹内的文件}