首先两台机器都安装rsync,本实例中192.168.9.104是主机 192.168.9.114是从机
直接yum安装
yum install rsync
安装之后,rsync默认在/usr/bin目录下,首先配置从机rsync配置文件,安装好后会自动生成/etc/rsyncd.conf配置文件,
建议先备份
mv /etc/rsyncd.conf /etc/rsyncd.conf.bak
cp /etc/rsyncd.conf.bak /etc/rsyncd.conf
然后修改配置文件,注意只需修改从机的配置/etc/rsyncd.conf(这里从机最终复制文件的机器)
vim /etc/rsyncd.conf
服务端脚本,开启允许同步数据服务
uid = nobody
gid = nobody
use chroot = yes
timeout = 900
max connections = 10
strict mode=yes
pid file = /var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
[backup]
path = /backup114/
comment = backup file
ignore errrors
read only=no
write only=no
#允许客户端从机同步的ip,可以添加网段及多个ip
hosts allow=192.168.9.104
hosts deny=*
list=false
uid=root
gid=root
auth users=admin
secrets file=/etc/rsync.password
这里只需要修改ip,将ip修改为文件存储的主机ip即文件源(文件开始所在机器)服务器ip,auth users 修改为/etc/rsync.password文件里面自己定义的用户和密码,主机上的/etc/rsync.password只需要密码就可以了,从机的这个文件需要定义用户和密码,两边要保持一致,另外需要注意这里的path是从机保存复制过来文件的目录,自己创建定义就好,注意要授权文件写入权限。
在从机上生成/etc/rsync.password
echo "admin:123456" > /etc/rsync.password
然后需要给密码文件600权限
chmod 600 /etc/rsync.password
启动 rsync 守护进程
/usr/bin/rsync --daemon
查看进程
ps -ef | grep rsync
加入系统自启动文件
echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local
关闭防火墙
systemctl stop firewalld
或者单独开放端口
rsync 默认端口为873,所以开放873端口
firewall-cmd --add-port=873/tcp --permanent --zone=public #重启防火墙(修改配置后要重启防火墙) firewall-cmd --reload
从机这样就设置好了,接下来就是主机了
主机需要安装rsync+inotify,主机安装rsync可以实现文件复制,安装inotify是为了监听文件夹变化达到实时自定复制
安装rsync
yum install rsync
设置密码文件/etc/rsync.password,注意主机不需要设置账户了,只需要设置密码
echo "123456" > /etc/rsync.password
密码文件设置权限
chmod 600 /etc/rsync.password
后台启动主机rsync服务
/usr/local/bin/rsync --daemon
加入系统自启动文件
echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local
开放873端口
firewall-cmd --add-port=873/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
客户端开启同步数据
rsync -avH --port 873 --delete /root/data/backup104/ admin@192.168.9.114::backup --password-file=/etc/rsync.password
安装inofity
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar -zxvf inotify-tools-3.14.tar.gz
cd /usr/local
mkdir inotify-tools-3.14
mv inotify-tools-3.14/* /usr/local/inotify-tools-3.14
chmod 775 inotify-tools-3.14
然后编译安装
cd inotify-tools-3.14
# 配置
./configure
# 编译及安装
make && make install
创建rsync同步的脚本
vim /root/data/backup104/inotifyrsync.sh
#!/bin/bash
host1=192.168.9.114
src=/root/data/backup104/
dst1=backup
user1=admin
/usr/local/inotify-tools-3.14/src/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src \
| while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.password $src $user1@$host1::$dst1 > /dev/null 2>&1
echo "${files} was rsynced." >> /tmp/rsync.log 2>&1
done
脚本中几点需要注意,host1是从机ip,src路径是主机监控被复制的路径,users1是从机中/etc/rsync.password里面设置的账号
脚本授权
chmod 755 /root/data/backup104/inotifyrsync.sh
后台运行脚本
/root/data/backup104/inotifyrsync.sh &
脚本加入系统自启动文件中
echo "/root/data/backup104/inotifyrsync.sh &" >> /etc/rc.local
启动rsync过程遇到这个错误
failed to create pid file /var/run/rsyncd.pid: File exists
直接删除rsyncd.pid就好了
rm -rf /var/run/rsyncd.pid
也可以直接用命令重启
systemctl restart rsyncd.service
另外记得把这个值调大点,默认值8192
echo 819200000 > /proc/sys/fs/inotify/max_user_watches