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开始同步