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

その後、ディレクトリ内のファイルsrccmpファイルを比較できます。dst

関連情報