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