You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多源场景下如何恢复rsync同步的文件?

多源场景下rsync反向恢复/同步的实现方法

好问题!当你用rsync把多个源目录同步到一个目标目录后,要反向将目标的内容推回所有源时,确实需要调整思路——毕竟rsync默认是单源到单/多目标的模式,反向多源的话得换个方式操作。下面给你拆解两种实用方法,还有关键注意细节:

方法一:逐个源手动/循环同步(最直观)

这是最直接的方式:遍历所有需要恢复的源目录,逐个执行反向rsync命令,把目标目录的内容同步过去。

比如你之前的正向同步命令是:

rsync -av /src1/ /src2/ /src3/ /dest/

现在要把/dest/的内容恢复到/src1/、/src2/、/src3/,可以手动执行:

# 同步回/src1/
rsync -av --delete /dest/ /src1/
# 同步回/src2/
rsync -av --delete /dest/ /src2/
# 同步回/src3/
rsync -av --delete /dest/ /src3/

如果源数量较多,写个简单的shell脚本循环处理更高效:

#!/bin/bash
# 定义所有需要恢复的源目录数组
SOURCE_DIRS=("/src1/" "/src2/" "/src3/")
# 目标备份目录
BACKUP_DIR="/dest/"

# 遍历每个源目录执行同步
for dir in "${SOURCE_DIRS[@]}"
do
    echo "正在将 ${BACKUP_DIR} 同步到 ${dir}..."
    rsync -av --delete "${BACKUP_DIR}" "${dir}"
done

给脚本加执行权限后运行即可:chmod +x sync_back.sh && ./sync_back.sh

方法二:用xargs批量处理(适合大量源)

如果源目录数量非常多,比如几十上百个,可以把所有源路径写入一个文本文件,再用xargs批量调用rsync。

  1. 先创建一个源路径列表文件src_list.txt,每行一个路径:
/src1/
/src2/
/src3/
/src4/
  1. 执行批量同步命令:
cat src_list.txt | xargs -I {} rsync -av --delete /dest/ {}

这里-I {}的作用是把文本里的每一行内容替换成{},然后逐个执行rsync命令,实现批量同步。


关键注意事项

  • 路径末尾的斜杠:一定要注意/dest/和/dest的区别——带斜杠表示同步/dest目录里的所有内容,不带斜杠会在目标源目录里创建一个新的dest子目录,这几乎不是你想要的结果,务必留意!
  • --delete参数的取舍:这个参数会删除源目录里存在但目标目录没有的文件,保证源和目标完全一致。如果不想删除源里的独有旧文件,就去掉这个参数,但这样源目录会保留历史文件,和目标目录无法完全同步。
  • 保持属性一致:使用-a参数(归档模式)会保留文件的权限、时间戳、软链接等属性,反向同步时建议和正向同步用相同的参数,避免属性丢失。
  • 增量同步优势:rsync默认是增量同步,只会传输变化的文件,所以即使源数量多,也不会重复传输相同内容,效率很高。

内容的提问来源于stack exchange,提问作者fanix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:23:03