使用 rsync 将远程存储库与本地存储库进行比较,但将差异发送到另一个远程存储库

使用 rsync 将远程存储库与本地存储库进行比较,但将差异发送到另一个远程存储库

我想rsync在脚本中使用来比较远程存储库与本地存储库,然后将差异写入不同的远程存储库。当我尝试这个时,我收到一个错误:

--compare-dest arg does not exist: user@ip:/path/to/repository

我认为该选项--compare-dest不能远程使用。有解决办法吗?

答案1

您无法直接执行此操作,但在某种程度上似乎确实可行。然而,我不确定我是否希望在生产代码中使用此功能,因为我还没有彻底检查该解决方案如何处理对现有文件的增量更改,其中本地源存储库、远程存储库和远程目标之间存在差异。

  1. 创建源和主远程之间更改的批处理文件:

    rsync -av --only-write-batch /…/batch.diff /…/src/ remoteHost:/…/cmp/
    
  2. 将这些差异传输到远程目标:

    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

然后您可以比较srccmpdst目录中的文件。

相关内容