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