rsync远程同步 是一个开源的快速备份工具,可以在不同主机之间同步整个目录,
源端负责文件起始位置,发起端和源端文件同步,拷贝文件,连接文件设备,
在保持源文件的权限,所有者,所在组,时间,软连接等都可以保持不变,实现增量同步,值同步发生变化的数据,数据传输效率很高,支持匿名,适合同步大文件,数据库可以同步
同步方式:
1 完整备份,第一次备份都是完整备份
2 往后的备份都是增量备份,同步变化的数据
rsync的命令选项:
-r 递归模式,目录和子目录的内容
-l 复制链接文件,软链接
-v 显示同步过程中的详细信息
-z 文件传输,进行压缩
-a 归档模式,保留文件的原有权限
-p 保留文件的权限标记(所有者,所有组)
-t 保留时间标记(时间戳)
-g 保留文件的所有者
-o 保留文件的所在组
-H 保留硬链接
-D: 保留设备文件和其他特殊文件
--delete: 删除目标位置有,但是原始位置没有的文件
下行同步:源端到客户端
上行同步:客户端到源端
test1 192.168.10.102
test2 192.168.10.101
下行同步:
test 1
systemctl stop firewalld
setenforce 0
vim /etc/rsyncd.conf
***************************************
uid = root
gid = root
use chroot = yes
#禁锢在源文件
address = 192.168.10.10 #
#监听地址
port = 873
#监听端口
log file = /var/log/rsync.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.10.0/24
#指定可以访问服务端的地址
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
取消注释:以上述后缀名的,同步时不进行压缩
配置共享模块和目录、账户、密码
[test]
path = /opt/test 指定共享目录
comment = test
read only = no
auth users = backuper
secrets file = /etc/rsyncd_users.db
******************************************
vim /etc/rsyncd_users.db
***************************************
backuper:123456
***************************************
赋权 chmod 600 /rsyncd_users.db
创建共享文件夹
mkdir -p /opt/test
chmod 777 /opt/test
rsync --daemon 重启
netstat -antp | grep rsync 查看服务是否启动,是否正常运行
kill $(cat /var/run/rsyncd.pid) 关闭服务
验证
test1
**********************
cd /opt/test
创建文件到/opt/test
**********************
test2
rsync -avz backuper@192.168.10.102::test /opt/
*************************************
rsync 发起同步的命令
-avz a保留文件权限 v显示详细过程 z同步过程中对文件进行压缩
:test 模块名称
/opt/ 存放路径
*************************************
免密交互
免密交换
test2
echo"123456"> /etc/server.pass
chmod 600 /etc/server.pass
rsync -avz --password-file=/etc/server.pass backuper@192.168.10.10::test /opt
上行同步:
inotifv通知接口,可以来监控文件系统的各种变化,文件存取,删除,移动都可以来监控
inotifv机制和rsynct同步一起使用,既可以实现监控,也可以实现同步
tar -xf inotify-tools-3.14,tar.gz
监控事件列队
最多监控的实例
每个实例最多监控的文件
test2
vim /etc/sysctl.conf
********************************
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
********************************
sysctl -p
./configure
make && make install
test1
vim /etc/rsyncd.conf
********************************
read only = no
********************************
test2监控
test2
inotifywait -mrq -e modify,create,move,delete /opt/test/
-m 持续监控
-r 递归整个目录
-q 简化的输出信息,信息提示
-e 指定监控的事件,多个事件用逗号隔开
写脚本,功能:既可以上行同步,也可以监控
vim /opt/inotifg
***********************************************************************
CMD="inotifywait -mrq -e modify,create,move,delete /opt/data/"
rsync_cmd="rsync -avz --password-file=/etc/server.pass /opt/data backuper@192.168.10.10::test"
$CMD | while read DIRECTORY EVENT FILE
do
if[ $(pgrep rsync | wc -l) -le 0 ]
then
$rsync_cmd
fi
done
***********************************************************************
给脚本777权限
chmod 777 /opt/inotifg
在系统启动期间自动运行用户自定义的命令或脚本
chmod +x /etc/rc.d/rc.local
echo '/opt/inotify.sh' >> /etc/rc.d/rc.local
crontab -e -u root
* * */2 * * /opt/inotify.sh
rsync同步数据
/home/blank/ 创建blank文件夹,在其内部多个创建文件,写入内容
将此文件夹/opt/test1/ 下的内容与/home/blank/同步
rsync --delete-before -a -H -v --progress --stats /home/blank/ /opt/test1
--delete-before 在传输的过程中进行删除
-a 归档
-H 硬链接
-v 输出过程信息
--progress 显示传输过程
--stats 给出文件的传输状态
执行完后:test1文件夹更新到与blank相同
test1和blank两个内的文件一样