一、简介
Rsync是一款开源的、快速的、多功能的、可实现全量及增量(全量备份是指全部备份,增量备份是在上一次备份的基础上只备份更新的内容)的本地货远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。

官网:http://www.samba.org/ftp/rsync/rsync.html

一个rsync相当于scp,cp,rm,但是还优于他们每一个命令。

在同步备份数据时,默认情况下,Rsync通过其独特的“quick check’算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据

二、rsync的daemon模式:
使用rsync的daemon模式,一定要分清哪个是客户端,哪个是服务端
服务端:接收远端同步数据的主机
客户端:把本地数据发送出去的主机

1.服务端的配置
①检查rsync 是否启动:ps -ef|grep rsync|grep -v grep
root 3588 1 0 14:01 ? 00:00:00 rsync --daemon
②配置/etc/rsyncd.conf配置文件,如果没有,需要手动创建
sudo vim /etc/rsyncd.conf

uid = diao

gid = diao

use chroot = no

max connections = 200

timeout = 300

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

[backup]

path = /backup/

ignore errors

read only = false

list = false

auth users = diao

secrets file = /etc/rsyncd.password

注意事项:
1)uid、gid:当使用非root账号时,那么一定要确保服务的的文件夹是否有该非root账号写入的权限
2)use chroot = no :是否可以切换到root目录,当chroot为yes的时候,客户端连接模块的时候,先chroot到模块参数指定的目录下,必须使用root权限,端口号必须是1024以内,且不能备份path路径外的链接文件
3)max connections = 200 :表示同时最大的连接数,也就是同时只能有两个客户端对自己进行连接。
4)path = /backup/:表示的是当客户端把数据同步过来将保存的路径
5)read only = false :指定是否允许客户端上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传。
6)auth users = diao用来进行同步的用户
7)secrets file = /etc/rsyncd.password :表示的是账号密码文件,此文件可随意指定,文件里必须以username:password的格式
此文件权限必须为600,否则会报错,chmod 600 /etc/rsyncd.password
而服务端与客户端中的文件格式有所不同
其中:服务端文件需要填写用户名和密码,并且以冒号分割,客户端中只需填写密码即可
③创建目标文件夹/backup/

sudo mkdir /backup
 chown -R diao:diao /backup/  #这个文件必须有非root用户的写入权限

④配置/etc/rsyncd.password文件

sudo vim /etc/rsyncd.password

diao:123456 #用户名:密码格式

#把密码放在/etc/rsync.password中是因为不想再交互了
#当别人连过来,会连secrets file= /etc/rsync.password这个文件,会使用authusers = diao这个用户。

sudo chmod 600 /etc/rsync.password 修改这个文件的权限
⑤重启rsync(root用户或使用sudo)

sudo ps -ef|grep rsync|grep -v grep

root 3588 1 0 14:01 ? 00:00:00 rsync --daemon

sudo kill -9  3588
sudo rsync --daemon

2.客户端的配置
①/etc/rsyncd.conf和服务端相同
②配置/etc/rsyncd.password
123456 #这里只需输入密码就可以了
③重启rsync(root用户或使用sudo)

sudo ps -ef|grep rsync|grep -v grep

root 3581 1 0 14:01 ? 00:00:00 rsync --daemon

sudo kill -9  3581
sudo rsync --daemon

3.测试

sudo rsync -avz /tmp/ diao@hadoop100::backup --password-file=/etc/rsyncd.password

/tmp/ #需要同步的文件目录
注:这里tmp后面有无/的区别:有/的时候表示的是把/tmp/目录下的内容同步过去,即/backup目录下直接就是之前/tmp目录下的内容;而无/的时候表示的是把整个tmp目录及其下文件夹同步过去,即/backup目录下还有一级/tmp,再下面才是之前/tmp目录下的内容。
diao #用户名
hadoop100 #远端服务端主机名,也可写ip地址
backup #模块名称

Logo

更多推荐