rsync是linux下的一款快速增量备份工具Remote Sync,是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。rsync是用 “rsync 算法”提供了客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好。
如:rsync-3.1.2.tar.gz
修改配置密码文件
格式为: 用户名:密码
(*出于安全考虑,我们把rsyncd.secrets权限设为600,注意这里的用户名和密码并不一定是系统的用户和密码,为了安全可以自已设置)
四、rsync基本操作
(2)通过xinetd的方式
如果出现如上信息,则需要把rsyncd.conf中的address改为127.0.0.1。
我这里就只在本机演示了
上述命令的意思是用test用户登陆到127.0.0.1的rsync服务器上,把backup数据同步到本地的/data/backup2目录下。
/data/rsync.pwd用来存储客户端用test用户登陆服务器时需要的密码
一、获取rsync源码
http://rsync.samba.org/download.html
二、安装rsync
> tar -zxf rsync-3.1.2.tar.gz > cd rsync-3.1.2 > ./configure --prefix=/data/rsync > make && make install
三、rsync的配置
rsync主要有三个配置文件:
1、rsyncd.conf(主配置文件) 3、rsyncd.secrets(密码文件) 3、rsyncd.motd(rysnc服务器信息)
分别创建如下文件
> touch /etc/rsyncd.conf > touch /etc/rsyncd.secrets > chmod 600 /etc/rsyncd.secrets > touch /etc/rsyncd.motd
修改上面创建的文件
> vi /etc/rsyncd.conf
#PID文件路径 pid file = /data/rsync/rsyncd.pid #锁文件路径 lock file = /data/rsync/rsyncd.lock #服务器日志文件路径 log file = /data/rsync/log/rsyncd.log #端口 port = 873 #IP地址 address = 192.168.1.10 #运行RSYNC守护进程的用户 uid = root #运行RSYNC守护进程的组 gid = root #使用chroot use chroot = yes #最大连接数为5 max connections = 5 #motd文件路径 motd file = /etc/rsyncd.motd #传输文件的日志 transfer logging = yes #日志文件格式 log format = %t %a %m %f %b #指定rsync发送日志消息给syslog时的消息级别。 syslog facility = local3 timeout = 300 #模块是定义服务器哪个目录要被同步 #每个模块都要以[name]形式定义 [backup] #镜像目录,不可缺少 path = /data/backup #允许列文件 list=yes #可以忽略一些无关的IO错误 ignore errors #认证的用户 auth users = test #密码文件路径 secrets file = /etc/rsyncd.secrets #注释 comment = backup data #排除/data/backup下的指定文件 exclude = test1/ test2/ #允许主机 hosts allow = 192.168.1.10 127.0.0.1 #禁止主机 hosts deny = *
(*如果自定义了日志文件路径,请手动创建log目录,并给予必要的权限)
> vi /etc/rsyncd.secrets
test:123456
修改服务器欢迎信息
> vi /etc/rsyncd.motd
++++++++++++++++++++++++++++++++++ welcome to use the rsync services! ++++++++++++++++++++++++++++++++++
启动rsync服务
(1)以--daemon方式启动服务
> /data/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf
查看rsync服务是否启动
> ps -ef|grep rsync > netstat -anlp|grep 873
(*如果没有正常启动,请查看日志文件)
bind() failed: Cannot assign requested address (address-family 2) 2016/04/15 13:37:21 [14946] unable to bind any inbound sockets on port 873 2016/04/15 13:37:21 [14946] rsync error: error in socket IO (code 10) at socket.c(555) [Receiver=3.1.2]
五、客户端配置与文件同步
客户端rsync的配置与服务器端基本相同,这里就不过多描述了。
> yum -y install rsync
> /data/rsync/bin/rsync -avzP test@127.0.0.1::backup /data/backup2
-a 参数,相当于-rlptgoD; -r 是递归; -l 是链接文件,意思是拷贝链接文件; -p 表示保持文件原有权限; -t 保持文件原有时间; -g 保持文件原有用户组; -o 保持文件原有属主; -D 相当于块设备文件; -z 传输时压缩; -P 传输进度; -v 传输时的进度等信息,和-P有点关系; --progress 是指显示出详细的进度情况 --delete 是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致 --password-file=/password/path/file 来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
> /data/rsync/bin/rsync -avzP --delete test@127.0.0.1::backup /data/backup2 > /data/rsync/bin/rsync -avzP --password-file=/data/rsync.pwd test@127.0.0.1::backup /data/backup2
> echo "123456" > /data/rsync.pwd > chmod 600 /data/rsync.pwd
六、客户端自动与服务器进行文件同步
通过创建定时任务来完成同步
> crontab -e * * * * * /data/rsync/bin/rsync -avzP --delete --password-file=/data/rsync.pwd test@127.0.0.1::backup /data/backup2
表示每分钟执行一次命令
> killall crond > /usr/sbin/crond
杀死crond进程,再重新启动
我们通过在/data/backup下创建新的文件,看看是否会同步到backup2目录下。
> cd /data/backup/ > echo "test..." > test.txt > cd /data/backup2/ > ls
等待了一分钟后,文件成功同步了。