rsync是类unix系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
文章主讲实际操作,不再进行详细叙述,想要了解更多可以查看百度百科。
一、提前说明:
1)以在两台服务器之间建立定时同步为例,将服务器A /home/jack 路径下的内容备份到服务器B /home/test 路径下
2)设置定时同步时间为5分钟
二、配置过程:
服务端(即服务器A):
- 安装rsync:yum -y install rsync
- ln -s /etc/rsyncd.conf
- 编写rsync的配置文件:vim rsyncd.conf
解析如下:
uid = root
#root用户访问(我这里用ROOT用户,也可以用其他新建的用户)
gid = root
#root组用户访问
port=873
#通过端口873
use chroot = yes
#可以使用chroot
read only = no
#可读写
max connections = 4
#最大连接数
list = no
#不列出文件清单
pid file = /var/run/rsyncd.pid
#此步可没有此文件
timeout = 900
lock file = /var/run/rsyncd.lock
#此步可没有此文件
log file = /var/log/rsyncd.log
#此步可没有此文件
[backup]
#发布项(注意这个命名)
comment = this is module for backup #模块介绍,可删去
path = /home/jack/
#发布的路径
ignore errors
auth users = root
#认证用户为root
secrets file = /etc/rsyncd.pass
#密码文件
- 编写用户密码文件:echo "root:123" >
(root:上一步设置的登录用户名;123:文件的密码自己随意设,但要记住,接下来需要用到;此步创建了rsyncd.pass文件)
- 修改密码文件的权限(此步很重要,且只能是600):chmod 600 /etc/rsyncd.pass
- 启动rsyncd服务
service rsyncd start
- 查看进程占用端口:netstat -tunlp
(启动rsyncd服务后会显示873端口被rsync占用)
客户端(即服务器B):
- yum -y install rsync
- echo "123" > /etc/rsyncd/rsyncd.pass
(root:用户名可不写,如果写,必须要和服务端设置的第3步中设置的用户名一致;
123:密码,必写,要和服务端设置的第4步中的密码一致)
- chmod 600 /etc/rsyncd.pass
- 创建存放备份文件的路径:mkdir /home/backups
(路径自己随意设)
- 每隔5分钟将服务器A中的backup模块目录下的文件(我们设置的是/home/jack)同步到本地下(我们设置的是/home/backups)
- ssh-keygen -t dsa -b 1024
然后一路回车即可。
- 将id_dsa.pub里面的内容添加到B机的authorized_keys文件中
cat /root/.ssh/id_dsa.pub >> authorized_keys
- 创建一个需要定时执行的脚本文件,如:rsyncd.sh脚本:vi /etc/rsyncd.sh
(路径自己设置的),在此脚本中添加如下内容:(命令的每条含义文档最后有解释)
rsync -avzP --delete --progress --password-file=/etc/rsyncd.pass root@192.168.22.130::backup /home/backups
参数说明:
-a 参数,相当于-rlptgoD(-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件);
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息;
--progress 指显示
--delete 指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
root 为用户名
@192.168.22.130为服务端IP
::后面的rsyncd为认证的模块名
/home/test 为备份到本地的目录名
--password-file=/etc/rsyncd.pass 制定密码存放位置的地址
- 设置脚本执行的时间:crontab -e,添加如下内容
*/5 * * * * sh /etc/rsyncd.sh #第5分钟执行一次同步;
到此,同步配置基本完成,正常情况下每5分钟就会同步一次
也可直接输入同步命令检查是否能够同步,命令格式为:
rsync命令格式:rsync [option] 源路径 目标路径;
例如:
将服务器A backup模块下要备份的文件同步到本地/home/test目录下:
rsync -avzP --delete --progress --password-file=/etc/rsyncd.pass root@192.168.22.130::backup /home/backups
正常情况下,同步成功会显示以上信息。
补充:(未实践)
文档已经实现了由服务端同步文件到客户端,那么同时也可以由客户端同步文件到服务端,只需要修改5-3步中的命令为
rsync –vzrtopg –progress –progress –password-file=/etc/rsyncd.pass /home/test/ root@192.168.20.20::backup
上面这条命令把本地目录/home/test/目录下的文件上传到服务器backup模块的目录下