rsync 带有可选覆盖树的目录树

rsync 带有可选覆盖树的目录树

我维护一个目录结构,其中包含我定期推送到~50 个主机的目录和文件,这些主机被分为 3 个组,每个组的需求略有不同 - 对几个文件进行了小修改。

因此理想情况下我应该有 4 个目录:

/path/to/sync/common/   <- common files
/path/to/sync/group1/   <- group1 specific only
/path/to/sync/group2/   <- group2 specific only
/path/to/sync/group3/   <- group3 specific only

然后我会运行一个 rsync

rsync -av --overlay /path/to/sync/groupN /path/to/sync/common remotehost:

考虑要传输的文件列表,我想要:

  • 任何共同点/添加到文件列表中的东西;然后
  • 将 groupN/ 中存在的所有内容添加到列表中,破坏已存在的所有内容

我知道我可以自己填充列表并使用,--files-from=<LIST>但我宁愿让 rsync 来解决这个问题如果有可能。我想不出一个简单且不笨重的方法来填充列表(指出一个方法可获二等奖!)

答案1

我已经找到了一种可行的方法,即首先在本地合并树木。

TEMPDIR=$(mktemp -d)
cp -r /path/to/sync/common/* $TEMPDIR
cp -r -f /path/to/sync/groupN/* $TEMPDIR
rsync -av $TEMPDIR/* remotehost:
rm -r $TEMPDIR

不过,我还是更喜欢使用 rsync 来进行本地 cp。

相关内容