rsync 비교 디렉토리?

rsync 비교 디렉토리?

rsync를 사용하여 두 디렉터리를 비교하고 차이점만 인쇄할 수 있습니까? 시험 실행 옵션이 있지만, 특정 수준으로 자세한 정보를 높이면 비교된 각 파일이 표시됩니다.

ls -alRdiff소스 코드에 모든 줄을 다르게 만드는 하드 링크가 있기 때문에 여기에는 옵션이 없습니다 . (물론 Perl을 사용하여 이 열을 삭제할 수 있습니다.)

답변1

Niels의 답변(Google을 통해 이 질문을 접하는 모든 사람의 경우)에 추가하면 기본적으로 rsync파일 크기와 수정 시간만 비교하여 차이점이 있는지 확인합니다. (다르면 더 많은 작업을 수행하지만 동일하면 거기서 멈춥니다.)

실제 파일을 비교하고 싶다면콘텐츠, 동일한 크기와 마지막 수정 시간을 가진 파일에 대해서도 체크섬을 사용하여 파일을 비교하도록 -c지시하는 플래그를 추가했습니다.rsync

rsync -avnc $SOURCE $TARGET

(이 옵션은 rsync가 on 보다 새로운 파일을 -u무시하도록 지시하는데 , 이는 내용을 비교하는 경우 아마도 수행하고 싶지 않을 것입니다.)$TARGET$SOURCE

답변2

rsync -avun --delete양방향으로 유사한 작업을 실행해야 할 수도 있습니다.

하지만 실제로 달성하려는 것은 무엇입니까?

고쳐 쓰다:

rsync -avun --delete $TARGET $SOURCE |grep "^deleting " 대상 디렉토리에 존재하지 않는 파일 목록을 제공합니다.

"grep delete"는 각 줄이 다음을 인쇄하기 때문입니다.삭제ing..파일..

rsync -avun $SOURCE $TARGET"다른" 파일(새 파일 포함) 목록이 제공됩니다.

답변3

덜 익숙한 사람들을 위해 rsync:

rsync -rvnc --delete ${SOURCE}/ ${DEST}
  • -r: 디렉토리로 재귀;
  • -v:목록 파일)
  • -n: 가장 중요한 점 - 해야 할 일아니요무엇이든 바꾸십시오.
  • -c: 수정 시간 및 크기 대신 체크섬으로 콘텐츠를 비교합니다( -a그렇지 않은 경우 사용됨).
  • --delete: 일방향 차이가 아닌 대칭적 차이를 찾으세요.
  • 마지막으로, /"디렉토리 내부를 살펴보고 그 내용을 비교하세요"를 의미합니다.콘텐츠목적지까지”.

일반적인 출력을 인쇄합니다 rsync.

  • <파일 이름>각 "새" 파일의 한 줄에${SOURCE}
  • 그리고"<파일 이름> 삭제".${DEST}
  • 또한 다음과 같은 경고를 인쇄할 수도 있습니다."일반적이지 않은 파일 <파일 이름> 건너뛰기"심볼릭 링크의 경우.

추신. 나는 이것이 나쁜 PS라는 것을 알고 있습니다. 그러나 그것은 정말 급하게 추가되었습니다. 그래도 사람들이 이것이 유용하다고 생각할 것입니다.


폴리페닐렌 설파이드. 또는 다음을 수행할 수 있습니다.
find $SOURCE -type f -exec md5sum {} \; | tee source.md5
find $DEST   -type f -exec md5sum {} \; | tee dest.md5

파일 이름에 개행 문자가 포함되어 있지 않으면 파일 자체 *.md5는 물론 두 파일을 모두 diff정렬 할 수 있습니다. (이것은 파일에만 적용됩니다. 즉, 양쪽에 있는 빈 디렉터리는 감지되지 않습니다.)

답변4

귀하의 질문에서 diff를 사용하고 싶지 않다는 것을 이해합니다.LS에서, 그러나 디렉토리에서 diff를 재귀적으로 사용할 수도 있습니다.

diff -rq DIR1 DIR2

관련 정보