linux 如何rsync实现增量同步文件到多台机器?
背景:
- 我需要经常把160机器上的文件,同步到171,111,105等
- 为什么选择rsync?它可以实现增量同步。这也是没选scp的原因
- 所以,我选择rsync来实现
解决方案:
1.安装
sudo apt-get install rsync # Debian sudo yum install rsync # Red Hat sudo pacman -S rsync # Arch Linux
2.建立ssd免密登录,给需要建立免密的都执行一遍
# 查看秘钥 cd ~/.ssh ; ls # 没有就生成 ssh-keygen # 有的话就直接上传秘钥 ssh-copy-id -i ~/.ssh/id_rsa.pub liqi@192.168.49.171 # liqi是我的用户名,根据需要自己改
3.执行命令,测试能否把mmmm同步到远程171
rsync -avz mmmm liqi@192.168.49.171:/home/lynxi/
4.另一台机器上查看,已经拷贝过去了。
ls | grep mmmm
5.可以写个脚本,每次运行都把mmmm同步到其他服务器上。
vim sync.sh
写入下列内容
#!/bin/bash echo "开始同步49.171" rsync -avz mmmm liqi@192.168.49.171:/home/liqi/ echo echo "开始同步49.105" rsync -avz mmmm liqi@192.168.49.105:/home/liqi/ echo echo "开始同步49.107" rsync -avz mmmm liqi@192.168.49.107:/home/liqi/ echo echo "开始同步49.111" rsync -avz mmmm liqi@192.168.49.111:/home/liqi/ echo echo "同步结束"
优点:每次需要同步的时候,就执行一下,可以增量同步。
缺点:主机删除的文件,不能同步删除到其他文件。(需要手动删除)
==========
2023年4月19日 更新。这个是可以删除的。增加--delete的参数。
也就是说,没有缺点!!!
--delete 删除那些目标目录中有而源目录中没有的多余文件。这个是rsync做增量方式的全备份的最佳选择方案!!!!!! --delete-before 接受者在输出之前进行删除操作。即先将目标目录中文件全部删除,再将源目录文件拷贝过去。这是rsync保持目标目录跟源目录一致的方案!!! --delete-after 在同步操作之后做比较,删除那些目标目录中有而源目录中没有的多余文件 --delete-excluded 删除目标目录中那些被该选项指定排除的文件
参考https://www.cnblogs.com/f-ck-need-u/p/7226781.html
================
效果:
扩展:
1. rsync 参数解释:
-a : 归档模式, 归档模式总是递归拷贝,而且保留符号链接、权限、属主、属组时间戳
-v : 详细模式输出
-z : 压缩传输
参考资料:
命令参数:https://www.cnblogs.com/qqblog/p/11788969.html
安装参考:https://www.ruanyifeng.com/blog/2020/08/rsync.html
秘钥参考连接 https://www.cnblogs.com/liqi175/p/16844279.html