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/ root@192.168.10.64:/web-back
done
#思路:只要使用inotifywait 检测到事件时,自动执行rsync进行同步操作。然后用一个定时任务,让这个脚本定时在后台执行就可以实现实时备份了