tar 아카이브를 생성하지 않고 어떻게 크기를 결정할 수 있습니까?

tar 아카이브를 생성하지 않고 어떻게 크기를 결정할 수 있습니까?

매일 밤 저는 LTO-7 테이프에 여러 개의 디렉터리를 보관합니다. 각 디렉터리에는 약 100개 정도의 큰(2GB) 파일이 포함되어 있습니다.

데이터가 올바르게 기록되었는지 확인하기 위해 기록된 바이트 수가 기록되어야 하는 바이트 수와 동일한지 확인하고 있습니다.

먼저 tar를 실행하여 아카이브의 크기를 확인했습니다.

tar -cP --warning=no-file-changed $OLDEST_DIR | wc -c

그런 다음 다음 명령을 사용하여 아카이브를 만듭니다.

tar -cvf /dev/nst0 --warning=no-file-changed --totals $OLDEST_DIR

파일 크기가 일치하면 원본 파일을 삭제합니다.

문제는 테스트 실행이 파일의 전체 내용을 읽어야 하며 몇 시간이 걸릴 수 있다는 것입니다. 이상적으로는 디스크에 시간을 낭비하는 대신 보고된 파일 크기를 사용하고, 필요한 패딩/정렬을 적용하고, 크기를 보고해야 합니다.

du -s크기가 정확히 일치하지 않기 때문에 또는 유사한 방법을 사용할 수 없습니다. 예를 들어 파일 시스템에서는 디렉터리를 4096바이트로 보고 tar에서는 0바이트로 봅니다 .

또는 파일이 올바르게 작성되었는지 확인하는 더 좋은 방법이 있습니까? 일부 경고를 무시했기 때문에 tar의 반환 코드를 신뢰할 수 없습니다(tar/mdraid로 일종의 오류 처리).

답변1

드라이브에 쓰는 명령에 추가 콘텐츠를 추가하면 파일 크기가 보고됩니다 v. tar모든 파일을 두 번 읽지 않고도 파일 크기를 구문 분석하고 비교할 수 있습니다.

귀하는 이것이 적절한 확인을 대신할 수 없다는 점을 인지해야 하며,백업에 대한 유일한 실제 검증은 복구입니다....LTO 드라이브에 유의하세요.작성하는 동안 확인하세요., 따라서 여기서 완전히 장님이 된 것은 아닙니다. 하지만 파일 크기 비교에만 의존하는 것만으로는 그다지 많은 것을 알 수 없습니다!

실제로 적절한 백업 소프트웨어를 사용하는 것이 좋습니다.막대 뼈테이프 백업에 적합합니다. 설정이 완료되면 이를 확인합니다.

답변2

적절한 테이프 보관 소프트웨어를 사용하는 것이 현명하다는 점에는 동의하지만 실패하면 실제 tar 출력을 체크섬 프로그램으로 파이프한 다음 테이프로 연결하면 됩니다. 예를 들어,

tar -cPf - --warning=no-file-changed $OLDEST_DIR |
tee >(md5sum > sum.md5) |
dd of=/dev/nst0 

그런 다음 테이프를 다시 읽어 체크섬을 비교할 수 있습니다.

dd if=/dev/nst0 | md5sum | diff - sum.md5

dd장치에 적합한 옵션을 추가 해야 할 수도 있습니다 . 나는 언제든지 다시 확인할 수 있도록 체크섬 값 자체를 테이프 끝에 추가하곤 했습니다. 물론 초기 tar에 오류가 있는지도 확인해야 합니다.

관련 정보