그리고
diff -r
diff
이 작업을 수행할 수 있지만 파일 내용을 확인하는 데 시간이 오래 걸립니다.
두 파일이 크기, 마지막 수정 사항 등이 동일하다는 것을 확인하고 싶습니다. 하지만 파일을 조금씩 확인하는 것은 아닙니다(예: 비디오는 시간이 오래 걸립니다).
다른 방법이 있나요?
답변1
rsync는 기본적으로 메타데이터만 비교합니다.
rsync -n -a -i --delete source/ target/
설명하다:
-n
비교하되 실제로 복사하거나 삭제하지 마세요. <-- 이것이 중요합니다! ! 1-a
모든 메타데이터 비교-i
파일당 한 줄의 정보를 인쇄합니다.--delete
또한 대상에는 있지만 소스에는 없는 파일도 보고합니다.
참고: 디렉터리 이름 뒤에 슬래시를 추가하는 것이 매우 중요합니다. 이것은 rsync 문제입니다.
또한 참고: rsync는 강력한 도구입니다. 위의 설명 중 일부는 이 질문의 맥락에서 매우 단순화되었습니다. 특히 -a
"모든 메타데이터"보다 훨씬 더 복잡합니다.
이렇게 문자 옵션을 단축할 수 있습니다.
rsync -nai --delete source/ target/
-i
동일한 파일에 대한 정보를 인쇄하기 위해 두 번 제공할 수 있습니다.
rsync -naii --delete source/ target/
예제 출력:
.d..t...... ./ (directory with different timestamp)
>f.st...... modifiedfile (file with different size and timestamp)
>f+++++++++ newfile (file in source but not in target)
*deleting removedfile (file in target but not in source)
.f samefile (file that has same metadata. only with -ii)
rsync는 메타데이터만 비교한다는 점을 기억하세요. 즉, 파일 내용은 변경되지만 메타데이터는 동일하게 유지되는 경우 rsync는 파일을 동일한 것으로 보고합니다. 이는 가능성이 낮은 시나리오입니다. 일반적으로 데이터가 변경되면 메타데이터도 변경됩니다. 따라서 메타데이터가 동일하면 데이터도 동일하다고 신뢰하거나 파일 데이터를 비트 단위로 비교해야 합니다.
보상: 진행 상황 정보는 여기를 참조하세요:rsync를 완료하는 데 필요한 시간이나 노력을 추정하시겠습니까?
답변2
방금 알아냈어요 tree
.
tree old_dir/ > tree_old
tree new_dir/ > tree_new
vimdiff tree_old tree_new
답변3
-q
( --brief
) 옵션을 diff -r
( ) 와 함께 사용하세요 diff -qr
. info
GNU 페이지 에서 diff
:
1.6 어떤 파일이 다른지 요약
차이점이 무엇인지 신경 쓰지 않고 파일이 다른지 확인하려는 경우 요약 출력 형식을 사용할 수 있습니다. 이 형식에서
diff' simply reports whether files differ. The
--brief' (`-q') 옵션은 파일 간의 차이점을 표시하는 대신 이 출력 형식을 선택합니다.이 형식은 두 디렉터리의 내용을 비교할 때 특히 유용합니다. 또한 "diff"는 차이점이 있음을 알게 되는 즉시 파일 분석을 중지할 수 있으므로 일반적인 줄별 비교보다 훨씬 빠릅니다.
이는 한 줄씩 비교하는 것이 아니라 파일 전체를 비교하여 프로세서 속도를 크게 향상시킵니다(원하는 것).
답변4
두 개의 파일 시스템 분기에 있는 파일이 서로 다른지(파일 내부를 확인하지 않고) 알고 싶은 경우 다음을 수행할 수 있습니다.
find /opt/branch1 -type f | sort | xargs -i md5sum {} >/tmp/branch1;
find /opt/branch2 -type f | sort | xargs -i md5sum {} >/tmp/branch2;
diff /tmp/branch1 /tmp/branch2;
화타이