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

 
posted @ 2023-01-10 15:51  o蹲蹲o  阅读(797)  评论(0编辑  收藏  举报