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

그런 다음 디렉터리에 있는 src, cmp및 파일을 비교할 수 있습니다 .dst

관련 정보