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