rsync 실행 시 변경 사항만 보기

rsync 실행 시 변경 사항만 보기

rsyncMac에서 외장 하드 드라이브로 파일을 백업하는 데 사용합니다 . 예를 들어:

rsync -av --delete ~/Pictures/ "/Volumes/My Passport/Mac Backups/Pictures"

이 작업을 수행하기 전에 다음 옵션을 추가하여 테스트 실행에서 동일한 명령을 실행했습니다 -n.

rsync -avn --delete ~/Pictures/ "/Volumes/My Passport/Mac Backups/Pictures"

제가 아는 바로는 복사/변경된 내용의 차이만 보아야 하는데 무슨 이유에서인지 모든 폴더와 파일이 인쇄되고 있습니다. 그러나 2개의 폴더를 사용하여 동일한 명령을 로컬에서 테스트하면 변경 사항의 차이점만 볼 수 있습니다. 왜 이런 일이 발생합니까? 어떻게 해결할 수 있나요?

고쳐 쓰다:

옵션을 추가한 후 -i(학습자의 답변 덕분에) 모든 파일이 나열된 이유를 확인할 수 있었습니다. 권한이 복사되지 않는 것 같습니다. 모든 폴더(및 파일)에는 다음이 포함됩니다.

.d...p... my folder/

권한을 복사하는 옵션을 추가했지만 여전히 운 -p-o없습니다 . -g어떤 아이디어가 있나요?

답변1

-i을 나타내는 rsync 옵션이 있습니다 --itemize-changes. rsync 매뉴얼에는 그렇게 될 것이라고 나와 있습니다."모든 업데이트에 대한 변경 사항 요약 출력".

어떤 파일과 디렉터리가 변경되어 소스 디렉터리에서 대상 디렉터리로 이동되었는지 표시됩니다. 또한 rsync가 파일이 변경되었다고 가정하는 이유도 보여줍니다. 예를 들어 소스 파일이 대상 파일과 크기가 다르거나 타임스탬프가 다르거나 권한이 다르기 때문일 수 있습니다.

여기에 예가 있습니다. 내가 만든 directory1directory2. 둘 다 이름이 지정된 파일이 포함되어 textfile있으며 두 파일 모두 내부에 문자 "A"만 있습니다. 그러나 디렉토리 1의 파일은 타임스탬프가 다릅니다. 따라서 실행 결과는 rsync -ahzi directory1/ directory2/다음과 같습니다.

.d..t...... ./
>f..t...... textfile

>파일이 다르기 때문에 로컬 대상으로 전송되었음을 의미합니다( 예: 파일을 동기화하면 해당 파일이 원격 대상이 되기 때문에 192.168.1.100:/some/directory이를 볼 수 있습니다 ). "파일"을 의미하며 파일에 다른 타임스탬프가 있음을 의미합니다.<ft

이제 파일의 내용도 변경되면 어떻게 될까요? 나는 "AB" 문자를 포함하도록 디렉토리1의 텍스트 파일을 편집했습니다. 그런 다음 다음을 실행했습니다 rsync -ahzi directory1/ directory2/.

.d..t...... ./
>f.st...... textfile

>대상이 다르기 때문에 파일이 대상으로 전송되었음을 나타냅니다 . 이는 s파일의 크기가 다르며 t타임스탬프도 다르다는 것을 알려줍니다.

이 출력에서 ​​볼 수 있는 다른 "플래그"는 다음과 같습니다.

p - Permission are different
o - Owner is different
g - Group is different
a - The ACL information changed

내 소스에는 이러한 모든 플래그에 대한 설명이 나와 있습니다.http://andreafrancia.blogspot.com/2010/03/as-you-may-know-rsyncs-delete-options.html

답변2

Thomas가 지적했듯이 문제는 하드 드라이브의 형식과 관련이 있습니다(제안된 솔루션이 --chmod제게는 효과가 없었습니다). 내 외장 하드 드라이브는 이고 ExFAT, 내 Mac의 하드 드라이브는 입니다 Mac OS Extended. 그래서 구글링을 좀 하다가 해결책을 찾았습니다.여기 >>

a: rlptgoD 스위치를 보관하고 교체합니다(재귀 디렉터리, 심볼릭 링크 유지, 권한 유지, 수정 시간 유지, 그룹 유지, 소유자 유지, 장치 파일 유지).

문제는 Linux exFAT가 권한 관련 스위치(pgo)를 잘 처리하지 못한다는 점입니다. 따라서 해결 방법은 p, g 및 o를 제거하고 다음 스위치로 rsync를 실행하는 것입니다.

그래서 내 질문에 대한 대답은 다음과 같습니다.

rsync -rltDvn --delete ~/Pictures/ "/Volumes/My Passport/Mac Backups/Pictures"

이제 변경된 파일만 볼 수 있습니다. 모두의 도움에 감사드립니다.

답변3

가능한 문제는 타임스탬프 세분성이 외부 드라이브에서 다르고 rsync가 이를 고려하지 않는다는 것입니다. 다음 방법을 사용하여 이 문제를 해결할 수 있습니다.--modify-window옵션:

--modify-window
두 타임스탬프를 비교할 때 rsync는 타임스탬프가 수정 창 값 내에 있는 경우 해당 타임스탬프를 동일한 것으로 처리합니다. 이 값은 일반적으로 0이지만 경우에 따라 더 큰 값으로 설정하는 것이 유용할 수 있습니다. 특히 이 옵션은 1초 해상도로 시간을 표현할 수 없는 FAT 파일 시스템으로 전송할 때 유용합니다.

수정된 질문 반영: 살펴보기rsync 매뉴얼 페이지비트에 대한 세부 정보입니다 --itemize-changes. 권한만 해결해야 합니다. 가장 사용하기 쉬운 외장 드라이브는 vfat:Microsoft 형식이며 Unix 파일 권한은 일치하지 않습니다.그룹그리고다른하지만 대부분의 애플리케이션은 실행 권한을 Unix와 일치하도록 매핑하려고 시도하지 않기 때문입니다. 이 경우, 당신은할 수 없다권한을 복사합니다. 다음 옵션을 사용하여 이 문제를 해결할 수 있습니다 ( 대상에서 얻을 수 있는 권한을 --chmod알려주는 마스크 제공 ).rsync

--chmod
이 옵션은 rsync에게 전송 중인 파일의 권한에 하나 이상의 쉼표로 구분된 "chmod" 문자열을 적용하도록 지시합니다. 결과 값은 보낸 사람이 파일에 대해 제공한 권한으로 처리됩니다.즉, 이 옵션은 다음과 같은 경우 기존 파일에 아무런 영향을 미치지 않는 것으로 나타납니다.--파마활성화되지 않았습니다.

관련 정보