
나는에서 찾았다Stackoverflow에 있는 이 게시물, 내용이 다른 해당 파일 목록을 얻으려면 다음을 실행할 수 있습니다.
diff --brief --recursive dir1/ dir2/
...이것을 직접 시도해 보면 내용이 다른 멋진 작은 파일 목록이 제공됩니다.
하지만 원본 파일 시스템(예: 2TB의 큰 파일 시스템 가정)을 백업했고 백업이 원본과 동일한지 확인하고 싶다면(예: 백업이 성공했는지 확인하고 싶습니다) 양쪽에서 사용할 수 없는 파일에만 관심이 있는 경우 실행해야 합니까? 나는 디렉토리 트리를 FAST(내용을 확인하지 않음)로 확인하는 것을 원합니다.
파일 크기를 비교하면 백업된 파일이 다른지 여부를 절대적으로 알 수는 없지만 비교 명령 중에 해당 파일과 파일 콘텐츠가 아닌 다른 메타데이터를 비교하면 도움이 됩니다.
(매우 유사한 질문을 다시 게시한 것에 대해 사과드립니다. 하지만 질문이 주제에서 벗어난 것일 수 있으므로 이 질문은 확실히 stackoverflow에 있을 것이라고 주장하는 사용자를 발견했습니다.)
이에 대한 경험이 있나요?
답변1
수정 시간과 파일 크기를 확인하는 비 rsync 솔루션:
diff <(find dir1 -mindepth 1 -printf '%P %t %s\n' | sort) <(find dir2 -mindepth 1 -printf '%P %t %s\n' | sort) | grep -E '^[<>]'
예제 출력:
> bar Sat Sep 14 11:52:33.0544384394 2013 91
< foo Fri Sep 13 17:58:21.0213671425 2013 445
> foo Sun Sep 8 23:01:02.0355432619 2013 347
에서 수정 foo
되었으며 에서만 존재하는 프로그램 입니다 .dir1
bar
dir2
답변2
어떤 백업 솔루션을 사용하고 있는지는 알려주지 않지만 거의 모든 실제 백업 프로그램에는 "확인" 모드가 있습니다. (이 맥락에서 "실제" 백업 도구는 백업 및 복원을 위해 특별히 설계된 소프트웨어인 Bacula와 같은 것입니다.)
다른 모든 조건이 동일하다면 실제 백업 소프트웨어와 내장된 확인 도구를 사용하는 것이 좋습니다.
동일하지 않은 다른 모든 것들은 rsync -nav --delete <backup> <original>
내 제안이 될 것입니다.
이것하다내용을 확인하면 추가 파일, 다른 파일, 누락된 파일에 대해 알려줍니다. 처럼 심층적(느린)은 아니며 실제로 파일 시스템에 영향을 미치지 않는다는 의미입니다 diff
.-n
답변3
위의 답변을 바탕으로 공유하고 싶은 다음과 같은 작은 스크립트를 생각해 냈습니다.
# vi /bin/checkbackup
#!/bin/bash
echo "1/5: Checking source files..."
find "$1" -type f -printf "%P %s\n" | sort > ~/.checkbackup_files.tmp
echo "2/5: Comparing destination files..."
find "$2" -type f -printf "%P %s\n" | sort | diff - ~/.checkbackup_files.tmp
echo "3/5: Checking source directories..."
find "$1" -type d -printf "%P\n" | sort > ~/.checkbackup_dirs.tmp
echo "4/5: Comparing destination directories..."
find "$2" -type d -printf "%P\n" | sort | diff - ~/.checkbackup_dirs.tmp
echo "5/5: Cleaning up"
rm -f ~/.checkbackup_files.tmp
rm -f ~/.checkbackup_dirs.tmp
# chmod 755 /bin/checkbackup
용법:
$ checkbackup /path/to/dir1 /path/to/dir2
보고서가 없다는 것은 폴더 구조와 이름이 동일하고 파일의 크기와 이름이 누락 없이 동일하다는 것을 의미합니다.
SATA2 5400rpm 디스크의 1.5TB 디렉토리 트리에서 테스트되었으며 약 5분 안에 완료됩니다.
이 스크립트는 결코 완성되지 않았습니다. 더 많은 검사 도구를 통해 의심할 여지 없이 더 좋고, 더 빠르고, 더 심층적인 다른 스크립트가 있습니다. 하지만 어쨌든 공유해야겠다고 생각했습니다.