rsync와 양방향 또는 양방향 동기화를 설정하려고합니다. 필자의 경우 B에서 A로 동기화 할 때 파일을 삭제하면됩니다. 따라서 다음과 같이 rsync를 두 번 실행하려고했습니다.
rsync -rtuv ./A/ ./B/
rsync -rtuv --delete ./B/ ./A/
이 솔루션 의이 문제는 rsync (AB)를 실행 한 직후에 rsync (B-> A)를 실행할 때 동기화 사이에 생성 된 새 파일도 제거된다는 것입니다.
이 날짜 / 시간 이전에 파일을 만든 경우에만 파일을 삭제하는 조건으로 타임 스탬프를 지정할 수있는 방법이 있습니까?
업데이트 :
통합 솔루션이 있음을 이해하지만 통합에 대한 문제는 양쪽 끝에 설치해야합니다. 원격 서버와 동기화 중이며 원격 끝에 unison을 설치할 수 없습니다.
답변
정확히이 작업을 위해 설계된 osync를 시도 할 수 있습니다. 한 번 복잡한 rsync 명령 시퀀스를 설정하여 작업을 수행했지만 이제는 osync를 사용합니다.
https://github.com/deajan/osync
내부적으로 rsync를 사용하므로 rsync를 사용할 수있는 모든 상황에 적합해야합니다.
답변
rsync
이 작업에 대한 잘못된 도구입니다. 정확히 발생한 이유입니다. 대신 다음을 사용하십시오 unison
.
unison A/ B/
당신이 처음 실행은 고유에있는 파일 식별 A
및에 유일하게있는 자들을 B
. 또한 두 곳에있는 것을 표시하고 덮어 쓸 것을 식별하도록 요청합니다.
당신이 실행할 때 그것은 변경 사항 복사됩니다 A
에 B
도 B
로를 A
수동 해결을 위해 두 곳에서 변경 한 모든 파일을 신고.
mkdir A B
date > A/date
who > B/who
unison A/ B/
# Lots of output from unison, showing synchronisation
ls A
date who
ls B
date who
date > A/date
unison A/ B/
# Lots of output from unison, showing synchronisation
unison
가정을 정의하여 동기화 중에 요청되는 질문 수를 줄여 프로세스를 자동화하는 데 유용한 유용한 플래그가 많이 있습니다 .