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/ root@192.168.87.138:/tmp/aaa

把本地的 /tmp/ 目录中的文件复制到192.168.87.138的 /tmp/aaa 目录下,通过22端口

(拉)# rsync avzP e 'ssh p 22' root@192.168.87.138:/tmp/ /tmp

把192.168.87.138的 /tmp/ 目录文件复制到本地的 /tmp 目录中

# rsync -avzP -e 'ssh -p 22' /tmp/ root@192.168.87.133:/tmp

# rsync -avzP -e 'ssh -p 22' root@192.168.87.133:/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 对应

回到服务器端检查,测试成功