rsync实现文件同步


工作模型  一台作为server端一台最为client端,client把数据差异同步到server上。从而实现数据的同步。


1.在server端和client上分别安装


yum install rsync -y


2.为server端提供配置文件   


vim /etc/rsyncd.conf


uid = root//如果是nobody的话后期再同步的时候会有一些文件无法同步会有权限的问题

gid = root//同上

use chroot = no

max connections = 200

#strict modes = yes

timeout = 100

lock file = /var/run/rsync.lock

pid file = /var/run/rsyncd.pid

log file = /var/log/rsyncd.log

[my]

path = /wcf/     //指定要同步的目录接收地址

ignore errors

read only = no

#write noly = no

hosts allow = 172.1.0.0/16

hosts deny = 0.0.0.0/32

list = false

auth users = myusers

secrets file = /etc/rsync.passwd 


3.创建密码文件


vim /etc/rsync.passwd


myusers:mypassword


4.修改密码文件的权限必须为600


chmod 600 /etc/rsync.passwd



5.启动服务


rsync --daemon


6.检查服务是否运行


netstat -tnlp | grep rsync

如果出现端口为873的表示服务已经启动


7.查看防火墙是否放行873的服务


iptables -L


如果不放行可以加规则放行rsync服务的请求和响应


8.写脚本实现检测服务是否正常运行如果没有这自动启动服务


vim /root/monitoringrsync.sh


#!/bin/bash

stat=`/usr/bin/netstat -tnlp | /usr/bin/grep 873 | /usr/bin/wc -l`

if [ $stat -eq 0 ]; then

        /usr/bin/rsync --daemon

fi


9.把脚本加到定时器中


crontab -e

*/10 * * * * /root/monitoringrsync.sh


配置client端


10.创建密码文件这里边的密码一定要和服务器端的一样


vim /etc/rsync.pass


mypassword


11.修改权限必须为600


chmod 600 /etc/rsync.pass


12.在客户端写脚本就可以实现自动同步了


vim /root/rsync.sh

#!/bin/bash

rsync -avz /users/ rsync://myusers@172.1.44.33/my --password-file=/etc/rsync.passwd && echo "Complete synchronization at `date`" >> /tmp/rsync.txt

if [ $? -ne 0 ]; then

        echo "Synchronization failure at `date`" >> /tmp/rsync.txt

        /sbin/sendmail 749629065@qq.com < /tmp/rsync.txt

fi


此脚本也可以检测是否完成同步可以查看脚本指定的文件/tmp/rsync.txt如何同步失败会给指定的用户发送电子邮件通知


13.把脚本加到crontab中


crontab -e

01 01 * * * /root/rsync.sh

实现每天的晚上凌晨1:01开始同步