1.简介
rsync是一款远程数据同步工具,一个Rsync server能够同时备份多个客户端数据,需要scp,ssh,daemon的支持,默认端口为873。
rsync + crond 可以实现数据定时同步,rsync + inotify可以实现数据的实时同步。
工作中的Rsync服务最好以只读方式提供要备份的数据,避免造成误操作。
2.实验环境介绍
两台CentOS6.3 x64 测试机,一台server,一台client。系统已经默认安装了rsync软件。
3.Rsync命令格式及命令参数
参数介绍:
-a 归档模式,表示以归档方式传输文件,并保持所有文件属性
-v 详细模式输出
-z 对备份的文件在传输时进行压缩处理
--delete 无差异同步
4.Rsync的三种工作模式
1)本地的拷贝和删除
# rsync avz /etc/hosts /tmp 将文件hosts拷贝到/tmp目录中。与cp命令相似,但区别在rsync可以自己比较两个文件,实现增量备份
# rsync avz delete /tmp/ /opt/ /tmp/目录为空,加上 --delete参数,相当于 rm 命令
--delete可以理解为:本地有远端有,本地没有删除远端有的
2)remote shell
rsync远程"推"和"拉"
(推)# rsync avzP e 'ssh p 22' /tmp/ [email protected]:/tmp/aaa
把本地的 /tmp/ 目录中的文件复制到192.168.87.138的 /tmp/aaa 目录下,通过22端口
(拉)# rsync avzP e 'ssh p 22' [email protected]:/tmp/ /tmp
把192.168.87.138的 /tmp/ 目录文件复制到本地的 /tmp 目录中
# rsync -avzP -e 'ssh -p 22' /tmp/ [email protected]:/tmp
# rsync -avzP -e 'ssh -p 22' [email protected]:/tmp/ /tmp
标红的斜杠,有这个就是推送指定文件夹的全部内容,没有这个就是推送整个目录
3)daemon (配置Rsync服务端步骤)
首先确认系统中安装了rsync版本及其版本号
# rsync --version查看当前rsync版本
# rpm qa rsync
rsync的配置文件默认不存在,需要手工创建。路径为 /etc/rsyncd.conf
编辑 /etc/rsyncd.conf 文件,内容如下。复制粘贴保存退出即可。
#Rsync server
#yuci
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 192.168.0.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
###################################
[backup]
comment = www by yuci
path = /backup
创建rsync用户及共享的目录 /backup(创建完后检查一下,养成好习惯)
如上编辑的文件,secrets file = /etc/rsync.password 为密码文件,可以实现两台机器互信。因为是密码所以需要更改权限。
rsync_backup 是上面配置文件的 auth users = rsync_backup "123456"为连接时需要验证的密码
# rsync --daemon 启动rsync服务
# netstat lntup | grep rsync 查看rsync是否正常运行在873端口
# ps ef | grep rsync
# echo "rsync --daemon" >> /etc/rc.local 加入开机自启动
# cat /etc/rc.local
到此为止,服务器端的配置已经完成。接下来配置客户端
# echo "123456" >> /etc/rsync.password
只需要密码即可,因为在连接命令中已经有了 rsync_backup用户
# chmod 600 /etc/rsync.password
跟服务器的密码文件相同,需要修改权限
客户端只需要这简单的两步就可以了。
5.测试环境搭建是否成功
现在要将客户端的 /tmp/ 目录中的文件,推送到服务端的 /backup 目录中,将 /backup 目录清空,在 /tmp/ 目录中随便创建几个文件
没有报错推送成功,下图选中的backup是要对应 /etc/rsyncd.conf 中的模块命令
与上图的 ::backup 对应
回到服务器端检查,测试成功