Rsync+Inotify实现文件自动同步

Rsync+Inotify实现文件自动同步

1、安装Rsync服务
Rsync是一个文件同步工具,安装Rsync服务器需要的安装包是rsync,Rsync服务器配置文件包含rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)和rsyncd.motd(服务器信息文件)

[root@sm ~]# yum install rsync -y
[root@sm ~]# vim /etc/rsyncd.conf

motd file = /etc/rsyncd.motd
#登录服务器标语
transfer logging = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
port = 873
#默认端口873
address = 192.168.1.105
uid = nobody
#数据传输时所用的账号
gid = nobody
use chroot = no
read only = no
#write only = yes
max connections = 10
[share]
#模块名
comment = user share
#模块描叙
path = /share
ignore errors
#exclude = lost+found/
#可排除/share目录内的其他目录不同步
auth users = bob,maray
#账号名
secrets file = /etc/rsyncd.secrets
hosts allow = 192.168.1.0/24
hosts deny = *
list = yes
#是否运行客户端请求模块显示
#list = false
#是否运行客户端请求模块显示

[root@sm ~]# echo “bob:bob123” > /etc/rsyncd.secrets
[root@sm ~]# echo “maray:maray123” >> /etc/rsyncd.secrets
[root@sm ~]# echo “This is rsync server” > /etc/rsyncd.motd
[root@sm ~]# chmod 600 /etc/rsyncd.secrets     #需要该值
[root@sm ~]#mkdir /share
[root@sm ~]# chmod 774 /share/
[root@sm ~]#chown -R nobody:root /share/
[root@sm ~]#systemctl start rsyncd
-----------------------------------------至此/share模块可以上传和下载
[root@sed ~]# rsync --list-only 192.168.1.105::     #显示服务器的模块信息
This is rsync server

share user share

[root@sed ~]# rsync --list-only [email protected]::share     #显示服务器的模块内的详细目录
This is rsync server

Password:
drwxrwxr-- 23 2019/11/30 05:06:36 .
drwx------ 100 2019/10/01 08:15:04 naptd-1.0

[root@sed ~]# rsync -avz [email protected]::share/naptd-1.0 /root/     #下载服务器中的模块目录

[root@sed ~]# rsync -avz /root/files [email protected]::share/    #上传本地目录至服务器中,注意:/root/files会创建根目录,/root/files/不会创建根目录。

2、安装Inotify服务
inotify可以实时监控目录文件,当文件目录发生变化,则触动rsync同步文件。
inotify-tool有两个程序,分别是inotifywait和inotifywatch。
[root@sm ~]# yum install inotify-tools -y

编写脚本监控/test目录,使得实时同步到/share目录下:
[root@sm ~]# echo “bob123” >/etc/rsyncd.pass;chmod 600 /etc/rsyncd.pass
[root@sm ~]# vim inotify.sh

扫描二维码关注公众号,回复: 10453752 查看本文章
#!/bin/bash
#This is rsync script on inotify.
export PATH=/bin:/usr/bin:/usr/local/bin
Sdir=/test
Ddir=share
Sip=192.168.1.105
#Dip=192.168.1.105
User=bob
Passfile=/etc/rsyncd.pass
#runing
inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %w%f %e' --event modify,create,move,delete,attrib, $Sdir | while read line 
do
echo "$line" > /var/log/inotify.log 2>&1
/usr/bin/rsync -avz --delete --progress --password-file=$Passfile $Sdir ${User}@$Sip::$Ddir >>/var/log/sync.log 2>&1
done &

#日志记录在/var/log/inotify.log;

[root@sm ~]# chmod o+x inotify.sh
[root@sm ~]# echo “/root/inotify.sh” > /etc/rc.local
[root@sed ~]# chmod o+x /etc/rc.d/rc.local

------------------------------------------------------------------------------------------------------------------

发布了57 篇原创文章 · 获赞 8 · 访问量 5549

猜你喜欢

转载自blog.csdn.net/zdl244/article/details/103321771