1. rsync同步操作
• 命令用法
– rsync [选项...] 源目录 目标目录
• 同步与复制的差异
– 复制:完全拷贝源到目标
– 同步:增量拷贝,只传输变化过的数据
• rsync操作选项
– -n:测试同步过程,不做实际修改
– --delete:删除目标文件夹内多余的文档
– -a:归档模式,相当于-rlptgoD
– -v:显示详细操作信息
– -z:传输过程中启用压缩/解压
• 本地同步
– rsync [选项...] 本地目录1 本地目录2
– rsync [选项...] 本地目录1/ 本地目录2
]# rsync -avz /boot /todir/ #同步整个文件夹
]# rsync -avz test1/ test2/ #只同步目录下的数据
]# rsync -avz --delete test1/ test2/ (同步1 --> 2 多退少补)
2. rsync+SSH同步
2.1 与远程的 SSH目录保持同步
– 下行:rsync [...] user@host:远程目录 本地目录
– 上行:rsync [...] 本地目录 user@host:远程目录
]# rsync -avz --delete /temp/test1/ root@192.168.4.8:/temp/
]# rsync -avz --delete root@192.168.4.8:/temp/ test1/
2.2 实时同步(配置无密码)
]# ssh-keygen #一路回车
]# ls /root/.ssh/
authorized_keys id_rsa id_rsa.pub known_hosts
复制公钥到对方
]# ssh-copy-id root@192.168.4.8
pc8:
]# ls /root/.ssh/
authorized_keys
pc7检测:
]# rsync -avz --delete /temp/test1/ root@192.168.4.8:/temp/
2.3 安装inotify-tools实现监控目录内容变化
源码安装后,查看生成的文件:
]# ls /usr/local/bin/
inotifywait inotifywatch
• 基本用法
– inotifywait [选项] 目标文件夹
• 常用命令选项
– -m,持续监控(捕获一个事件后不退出)
– -r,递归监控、包括子目录及文件
– -q,减少屏幕输出信息
– -e,指定监视的 modify、move、create、delete、attrib 等事件类别
2.3.1 开始持续递归监控:
]# inotifywait -rmq /temp
新开一个窗口指定增删改查操作,查看实时监控状态
2.3.2 书写Shell脚本,实时同步
#!/bin/bash
while inotifywait -rqq /temp
do
rsync -az --delete /temp/ root@192.168.4.8:/temp/
done &
2.3.3 终止脚本
]# pgrep -l rsync
]# killall rsync.sh
]# ps aux | grep inotifywait
]# kill -9 pid号