그래서 나는 rsync가 파일 크기와 날짜를 기반으로 파일을 업데이트하는 체크섬 알고리즘을 사용하여 작동한다는 것을 알고 있습니다. 그런데 이 동기화는 소스와 타겟이 어떻게 호출되는지에 따라 달라지지 않나요? 소스에서 대상으로의 순서가 동기화된 콘텐츠의 동작을 변경하지 않습니까?
내가 가는 곳까지 데려다줘..
분명히 이것은input1
rsync -e ssh -varz ~/local/directory/ [email protected]:~/remoteFolder/
같지 않음input2
rsync -e ssh -varz [email protected]:~/remoteFolder/ ~/local/directory/
하지만 어떤 방식으로 호출하든 rsync의 요점은 모든 최신 파일이 로컬 대상과 원격 대상 간에 업데이트된다는 것입니다.
그러나 이는 새 파일이 대상 위치가 아닌 원본 위치에 있는지 여부에 따라 달라지는 것 같습니다. 내가 업데이트하면파일 1내 로컬 컴퓨터(동일하지만 더 오래됨)파일 1서버에) 저장한 다음 code2
위치 간 동기화에 사용했는데 새 버전이파일 1내 로컬 컴퓨터의 서버에 업로드할 수 없습니다. 실제로는 최신 파일을 이전 버전으로 덮어씁니다. 제가 사용하면 input2
수정된 내용이 서버에 업로드됩니다.
문자 그대로 동기화하기 위해 rsync를 실행하는 방법이 있습니까?새로운 것과 수정된 것원본 또는 대상 위치에 관계없이 파일은 최신/수정된 파일 위치를 기준으로 먼저 호출됩니까?
답변1
아니요, rsync
파일은 한 방향으로만 동기화됩니다. 스마트하고 더 강력한 버전이라고 생각하세요 cp
(또는 mv
해당 옵션을 사용하는 경우 --remove-source-files
). 대상에 이미 존재하는 데이터를 건너뛰려고 한다는 점에서 스마트하고, cp
수행하지 않는 작업을 수행할 수 있다는 점에서 기능적입니다. , 예를 들어 소스에서 삭제된 파일을 대상에서 삭제합니다. 그러나 본질적으로 이는 원본에서 대상으로 복사하는 동일한 작업을 수행합니다.
~처럼패트릭댓글에서도 언급했지만,일관된당신이 찾고 있는 것을 수행하고 양방향으로 업데이트할 것입니다. 그러나 이는 표준 도구가 아닙니다. 많은 UNIX 계열 시스템에 설치되지만 rsync
일반적으로 설치되지는 않습니다 unison
. 그러나 Linux 배포판에서는 패키지 관리자에서 찾을 수 있습니다.
답변2
~을 위한가장 간단한 경우사람은 비효율적일 수 있다
$ rsync-au AB; rsync-au BA;
최신 파일을 양쪽에 복사하세요. 그래서 가능합니다. 그러나 권장되지 않습니다.