rsync+inotify文件实时同步

rsync命令的基本用法:

格式: rsync [选项] 源文件 目标文件

选项:

 

-a,--archive:归档模式,表示用归档的方式传输文件,并且保持文件的属性,等于加了参数 -rlptgoD

-r,recursive:对子目录用递归模式处理

-l,--links:表示考本链接文件

-p,--perms:表示保持文件原有权限

-t,--times:表示保持文件原有时间

-g,--group:表示保持文件原有用户组

-o,--owner:表示保持文件原有属主

-D,--devices:表示块设备文件信息

-z,--compress:表示压缩传输

-H:表示硬链接问价

-A:保留ACL属性信息

-P:显示传输进度

--delete:删除那些目标位置有而且原始位置没有的文件

常用选项:-avz --progress -P

推送文件:

rsync -avz --progress -P /root/test.sh 192.168.0.1:/root

拉取文件:

rsync -avz --progress -P 192.168.0.1:/root/test.sh /root/test/test/

注意:

1、如果对端服务器没有安装rsync服务,那么rsync是既无法实现推送文件也无法实现拉取文件

2、rsync是基于ssh协议的,默认是22端口。不管是需要推送文件还是需要拉取文件,都是需要root和root密码的。

3、如果目标机器的ssh端口不是22,那么需要增加一个选项 -e 'ssh -p ssh端口号'

 

inotify:

安装inotify:

1、wget https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz

 

2、tar -zvxf inotify-tools-3.13.tar.gz

cd inotify-tools-3.13

./configure

make && make install

 

3、inotifywait -h

常用参数:

-m:表示持续监控

-r:表示递归整个目录

-q:表示简化输出信息

-e:用来指定要监控哪些事件

事件包括:

create 创建

move 移动

delete 删除

modify 修改

attrib 属性更改

 

inotifywait -mrq -e create,move,delete,modify /root/rsync_in/

#另外开一个终端,只要在/root/rsync_in/这个目录下进行创建,移动,删除,修改文件或者目录的操作,那么都会被记录下来

 

#!/bin/bash
inotifywait -mrq -e create,move,delete,modify /var/www/html/  | while read a b c
do      
rsync -azP --delete /var/www/html/ [email protected]:/web-back
done

#思路:只要使用inotifywait 检测到事件时,自动执行rsync进行同步操作。然后用一个定时任务,让这个脚本定时在后台执行就可以实现实时备份了

 

 

 

你可能感兴趣的:(Linux)