我想rsync
在脚本中使用来比较远程存储库与本地存储库,然后将差异写入不同的远程存储库。当我尝试这个时,我收到一个错误:
--compare-dest arg does not exist: user@ip:/path/to/repository
我认为该选项--compare-dest
不能远程使用。有解决办法吗?
答案1
您无法直接执行此操作,但在某种程度上似乎确实可行。然而,我不确定我是否希望在生产代码中使用此功能,因为我还没有彻底检查该解决方案如何处理对现有文件的增量更改,其中本地源存储库、远程存储库和远程目标之间存在差异。
创建源和主远程之间更改的批处理文件:
rsync -av --only-write-batch /…/batch.diff /…/src/ remoteHost:/…/cmp/
将这些差异传输到远程目标:
ssh remoteHost rsync -av --read-batch - /…/dst/ </…/batch.diff
工作示例:
mkdir -p /tmp/763572/src
ssh remoteHost 'mkdir -p /tmp/763572/cmp /tmp/763572/dst'
date >/tmp/763572/src/date
who >/tmp/763572/src/who
ps >/tmp/763572/src/ps
ssh remoteHost 'date >/tmp/763572/cmp/date'
scp -p /tmp/763572/src/ps remoteHost:/tmp/763572/dst/
rsync -av --only-write-batch /tmp/763572/batch.diff /tmp/763572/src/ remoteHost:/tmp/763572/cmp/
ssh remoteHost rsync -av --read-batch - /tmp/763572/dst/ </tmp/763572/batch.diff
然后您可以比较src
、cmp
和dst
目录中的文件。