백업 복원 결과를 확인하고 싶습니다. 이는 MacOS의 TimeMachine에서 몇 가지 이상한 오류와 경고가 표시되고 복원 후 모든 것이 제자리로 돌아가는지 확인하고 싶기 때문입니다. 저는 TimeMachine이 모든 파일을 복구할 것이라고 믿지는 않지만, TimeMachine이 올바른 콘텐츠로 복구하는 모든 파일을 복구할 것이라고 믿습니다.
diff -r을 고려했지만 약 300GiB에는 시간이 오래 걸릴 것입니다. 최소한 파일 존재 여부를 비교할 수는 있지만 동일한 실행에서 크기와 날짜를 비교하는 것이 더 좋습니다.
나는 이런 해결책을 알고 있다
diff <(ls -R $PATH1) <(ls -R $PATH2)
그러나 출력을 읽기가 어렵습니다. 차라리 한쪽에 파일당 한 줄만 찾는 것이 낫습니다. 또한 양쪽에서 동일한 순서로 트리를 탐색하려면 ls를 사용해야 합니다. 파일 시스템이 다르기 때문에 이는 다를 수 있습니다.
내가 가장 얻고 싶은 것은 두 가지 경로를 모두 취하고 필요한 검사 수준(아마도 macports 외부의 무언가)에 대한 diff를 출력하는 게으른 사람들을 위한 도구입니다. 하지만 충분히 안타를 치는 것에 대해서는 걱정하지 않는다.
답변1
해결책은 다음과 같습니다.
rsync -nrv --delete dirA/ dirB/
두 폴더를 동일하게 만드는 대신 rsync를 사용하여 해당 내용만 표시합니다.회의하다. 이것이 효과입니다 -n
. 주의하세요. 이 옵션을 추가하는 것을 잊지 마세요!
이는 원하는 내용에 대한 자세한 목록을 제공하는 -r
재귀 검색을 의미합니다 . 다른 항목을 추가하여 모든 동일 항목을 나열 -v
할 수도 있습니다 .-v
--delete
소스에 존재하지 않는 대상 파일 삭제를 시뮬레이션하도록 rsync에 지시합니다 . 이 -n
플래그가 없으면 dirB
폴더는 와 동일해집니다 dirA
.
기본적으로 rsync는 파일 이름과 타임스탬프만 확인하는데, 이는 사용자가 요청한 빠른 옵션입니다. diff 동작과 유사한 동작(그리고 똑같이 느린 동작)을 원하는 경우 -c
체크섬 비교를 강제하는 플래그를 추가할 수 있습니다.
rsync -nrvc --delete dirA/ dirB/
dirA/
및 에서 후행 슬래시의 사용법에 유의하십시오 . dirB/
이는 에서 중요합니다 rsync
. 자세한 내용을 보려면 rsync
매뉴얼 페이지를 살펴보세요. 이 강력한 명령에 익숙해지는 것이 좋습니다.
답변2
당신이 언급한 "솔루션"은 정말 나쁜 솔루션(예: 이상한 파일 이름을 처리하지 않음)이고 완전히 불필요합니다. 그냥 직접 사용하십시오 diff
.
diff -r "$PATH1" "$PATH2"
이는 반복적으로( -r
) 디렉토리를 비교하고 파일이 있는지 또는 누락되었는지 보고합니다. 예를 들어:
$ tree
.
├── dirA
│ ├── file1
│ └── file2
└── dirB
└── file{1}
$ diff -qr dirA dirB
Files dirA/file1 and dirB/file1 differ
Only in dirA: file2
Only in dirB: file3
이 -q
옵션은 "조용함"을 의미하며 차이점을 인쇄하지 않고 파일이 다른 경우에만 보고합니다. 위의 예에서는 파일 dirA/file1
과 dirB/file1
내용이 다릅니다. 이 형식은 예상한 대로 간단하고 큰 디렉터리의 경우에도 상당히 빠릅니다.