Linux系统 文件同步、目录监听(rsync + inotify)

Linux系统 文件同步、目录监听

安装软件

监听端: 监听本地文件,发生改动则上传至接收端
接收端: 被动接收监听端 传输的文件

监听端 安装: rsync 和 inotify
接收端 安装: rsync

接收端配置:密码、配置文件

配置文件:/etc/rsyncd.conf

# 配置用户组,默认给root权限
uid = root
gid = root
#模块名称(rsync_image)
[rsync_image]          
#同步的路径
path=/home/backup_image 
ignore errors
#是否只读,接收端接收文件,必须为false
read only=false    
#是否可以写文件 (此项不太清楚作用,保留)[???待研究]
write only=true
#下面配置同步时候的身份,注意该身份是在rsync里面定义的,并非是本机实际用户。
#客户端获取文件的身份此用户并不是本机中确实存在的用户
#此处配置可以参考:(/etc/rsync_client.pass)
auth users=pw    
#//用来认证客户端的秘钥文件 格式 USERNAME:PASSWD 此文件权     
#//限一定需要改为600,且属主必须与运行rsync的用户一致。  
secrets file=/etc/rsync_client.pass                                                            
#允许所有主机访问(可以使用IP eg:192.168.1.2 192.168.1.3)
hosts allow=*
 

密码文件:/etc/rsync_client.pass

#还不太清楚 多个用户,多个模块如何配置,[???待研究]
#[双机认证的用户名]:[密码]
pw:pw123

监听端配置:密码、配置文件

配置文件:/etc/rsyncd.conf

# 模块名
[rsync_image]
# 同步的目录
path =/home/backup_test
ignore errors
# 是否只读 
read only=false
# 允许的ip地址
hosts allow =* #192.168.1.46
hosts deny=0.0.0.0/32
# 认证用户名
auth users=pw
#密码文件
secrets file=/etc/pw.pass

密码文件:/etc/pw.pass

#监听端 = 上传端,配置的是密码,不需要配置用户名
pw123

启动rsync服务

默认启动服务端口:873

启动命令:--config加载的配置文件路径

rsync --daemon --config=/etc/rsyncd.conf

注意 监听端接收端 服务都需要是启动状态

查看rsync服务启动状态,两种方式:

一、查看端口方式:lsof -i:873 
二、查询服务:ps -ef | grep rsync

启动文件同步

测试同步,仅执行时同步`

#同步新增、修改,不包含删除
rsync -vzrtopg --progress --password-file=/etc/pw.pass /home/backup_test pw@192.168.1.46::rsync_image


#--delete 是否同步删除
rsync -vzrtopg --progress --delete --password-file=/etc/pw.pass /home/backup_test pw@192.168.1.46::rsync_image

–password-file密码文件
/home/backup_test需要同步的目录
pw@192.168.1.46::rsync_image用户名:IP::[模块名]
–delete是否同步删除操作,不传[默认]不同步


测试单次同步

测试机介绍:
    [root@poon-server01] : 监听端 - 本地IP:1.17
    [root@bogon] : 接收端 - 本地IP:1.46
    
1.46同步1.17上 /home/backup_test 目录

1.17: 同步目录:/home/backup_test
1.46: 接收目录:/home/backup_image
1.17 目录下新建文件并上传至1.46

执行前1.17服务器内容: 空

[root@poon-server01 backup_test]# pwd
/home/backup_test
[root@poon-server01 backup_test]# ls
[root@poon-server01 backup_test]# 

执行前1.46服务器内容:空

[root@bogon backup_image]# pwd
/home/backup_image
[root@bogon backup_image]# ls
[root@bogon backup_image]# 

1.17 目录下生成文件,并同步

[root@poon-server01 backup_test]# vim 11.txt
[root@poon-server01 backup_test]# ls
11.txt
[root@poon-server01 backup_test]# mkdir test
[root@poon-server01 backup_test]# cp 11.txt test/
[root@poon-server01 backup_test]# ls
11.txt  test
[root@poon-server01 backup_test]# cd test/
[root@poon-server01 test]# ls
11.txt
[root@poon-server01 test]# rsync -vzrtopg --progress --password-file=/etc/pw.pass /home/backup_test pw@192.168.1.46::rsync_image
sending incremental file list
backup_test/
backup_test/11.txt
              8 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=2/4)
backup_test/test/
backup_test/test/11.txt
              8 100%    7.81kB/s    0:00:00 (xfr#2, to-chk=0/4)

sent 247 bytes  received 70 bytes  634.00 bytes/sec
total size is 16  speedup is 0.05
[root@poon-server01 test]# 

1.46 目录如下

[root@bogon backup_image]# ls
backup_test
[root@bogon backup_image]# ls backup_test/
11.txt  test
[root@bogon backup_image]# ls backup_test/test/
11.txt
[root@bogon backup_image]# 

##监听端安装 inotify

下载安装源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

安装:

yum install inotify-tools -y

编写inotify监听脚本

#!/bin/bash
host=192.168.1.46
src=/home/backup_test
des=rsync_image
user=pw
pwdFile=/etc/pw.pass

#inotifywait -m:保持监听事件。-r:递归查看目录。-q:打印出事件。-e modify,delete,create,attrib:监听写入,删除,创建,属性改变事件。

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files 
do
rsync -vzrtopg --progress --delete --password-file=$pwdFile $src $user@$host::$des
echo "${files} was rsynced" >>/var/log/rsyncd.log 2>&1
done

启动脚本后开始监听 /home/backup_test目录的文件变动

inotify 参数说明

inotifywait参数含义说明
-r --recursive递归查询目录
-q --quiet打印很少的信息,仅仅打印监控事件的信息
-m,–monitor始终保持事件监听状态
–exclude排除文件或目录时,不区分大小写。
–timefmt指定时间输出的格式
–format打印使用指定的输出类似格式字符串
-e,–event通过此参数可以指定需要监控的事件,如下一个列表所示

-e :–event的各种事件含义

Events含义
modify文件或目录内容被修改
attrib文件或目录属性被改变
close_write结束文件写入操作
move文件或目录被移动到另一个目录或从另一个目录移动至当前目录
create文件或目录被创建在当前目录
delete文件或目录被删除
access文件或目录被读取
close文件或目录封闭,无论读/写模式
open文件或目录被打开
moved_to文件或目录被移动至另外一个目录
umount文件系统被卸载

##防火墙

放开873端口 TCP/UDP

firewall-cmd --zone=public --add-port=873/tcp --permanent
firewall-cmd --zone=public --add-port=873/udp --permanent

重启防火墙后即可


##设置开机自启动

接收端

启动rsync服务即可

echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.local

监听端

启动rsync服务

echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.local

启动inotify监听脚本

echo "nohup /home/backup_files/backup_img.sh > /var/log/inotify_runlog.log 2>&1 &" >> /etc/rc.local

nohup /home/backup_files/backup_img.sh > /var/log/inotify_runlog.log 2>&1 &

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值