한 컴퓨터에서 다른 컴퓨터(600GB 이상)로 대용량 파일을 전송하는 작업을 처리하고 있으며 다음을 사용하여 압축하고 있습니다.
tar -cpvzf file.tar.gz -C PATH_TO_DIR DIR
코킹 공정이 완료되면 다음 작업이 완료됩니다.
split -d -b 2G file.tar.gz file_part_
그러면 전체 파일이 2GB 청크로 분할될 때까지 file_part_00, file_part_01...이 생성됩니다. 파일을 전송하기 전에 tar-split 디렉터리의 각 섹션을 반복하고 다음과 같은 항목을 사용하여 해당 md5 해시를 수집합니다.
md5sum PART_NAME >> list_md5.start
각 부분을 해싱한 후 다음을 수행합니다.
sort -u list_md5.start
(이렇게 하면 안전을 위해 항목을 정렬하고 중복 항목을 제거합니다.)
그런 다음 부품은 list_md5.start에 나타나는 순서대로 하나씩 전송됩니다. 다른 시스템에 도착하면 md5 해시는 동일한 방법을 사용하여 수집되지만 list_md5_2.start라고 하는 다른 목록에 수집됩니다. 전송 후 부품을 다시 조립하기 전에 다음을 실행합니다.
diff list_md5.start list_md5_2.start
차이점이 발견되지 않으면 다음 섹션으로 넘어갑니다. 그렇지 않으면 포기하고 모든 부분을 삭제하겠습니다. 다시 조립할 때 나는 다음을 수행합니다.
cat file_part_* > file.tar.gz.incomplete
(만나는 .tar.gz의 압축을 풀기 위해 기다리는 감시자가 있기 때문에 불완전한 부분이 존재합니다). cat이 완료되면 다음을 사용하여 파일 이름이 변경됩니다.
mv file.tar.gz.incomplete file.tar.gz
이 시점에서 watchdog은 이를 감지하고 다음 명령을 사용하여 압축을 풉니다.
tar -C DEST -xzf file.tar.gz --totals --unlink-first --recursive-unlink
이 시점에서 디버깅할 수 없는 오류가 발생합니다.
Tar Failed 2
gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
/PATH/TO/DEST
압축 해제 후에는 tar는 실패 여부와 관계없이 삭제됩니다(압축 해제에 실패한 대용량 파일을 보관하는 것은 의미가 없습니다).
때때로 md5sum이 일치하지 않아 프로세스가 중지된다는 점은 주목할 가치가 있습니다(이는 cat
조립 단계 전에 확인됩니다).
이름이 유효하지 않은지 확인하려고 노력했습니다. 부품 크기를 더 작은 크기로 변경해 보았습니다. 프로세스를 수동으로 진행하려고 시도했지만 여전히 md5sum 불일치 또는 EOF 오류 문제가 발생합니다.
이 작업은 모두 업데이트된 Ubuntu 시스템에서 수행되었습니다(보류 중인 업데이트 없음).
이 문제를 해결하는 방법을 아는 사람이 있나요?
답변1
Rsync는 한 호스트에서 다른 호스트로 파일과 디렉터리를 복사하는 Unix 계열 및 Linux 시스템용 무료 소프트웨어 유틸리티입니다.
rsync를 사용하여 한 시스템에서 다른 시스템으로 파일을 전송합니다. 화면을 사용하고 rsync를 시작한 다음 화면 연결을 끊을 수 있습니다.
Rsync는 파일 전송이 증분식이므로 가벼운 응용 프로그램으로 간주됩니다. 즉, 초기 전체 전송 후에는 파일에서 변경된 비트만 전송됩니다. Rsynch는 방화벽 외부의 원격 컴퓨터에 데이터를 동기화하여 오프사이트 백업을 제공하는 데 자주 사용됩니다. 웹사이트 미러링에도 사용됩니다.
답변2
이 문제는 추가 저장 공간을 추가하여 해결되었습니다. 특히, 타르를 분할하는 동안 보관할 수 있도록 2TB 하드 드라이브를 추가했습니다. 처음에는 전체 프로세스가 다른 대용량 파일이 포함된 6TB 하드 드라이브에서 수행되어 최대 3TB의 저장 공간을 확보했습니다. 우리는 백그라운드에서 대부분의 공간을 차지하고 문제의 손상된 tar 문제를 재현하는 많은 콘텐츠를 다운로드할 때 이 문제를 발견했습니다.
이 솔루션이 가장 훌륭하지는 않을 수 있지만 압축 후 원본 파일을 삭제하면 상당한 오버헤드가 발생하므로 단순히 추가 저장 공간을 추가하는 것보다 더 많은 시간이 소요됩니다.
누군가 이 문제를 우연히 발견하고 나와 같은 경로를 겪고 있는 경우 새 하드 드라이브를 추가하기 위해 수행한 단계는 다음과 같습니다. https://askubuntu.com/a/125277/
누군가 저장 공간이 충분한지 확인해 보라고 제안했다는 점을 지적하고 싶습니다. 그 공로를 인정하고 싶습니다. 제안 사항은 다음과 같습니다.
첫 번째 tar -cpvzf ...가 오류 없이 실행되고, 반환 코드(echo $?)가 0인지, 디스크 공간이 충분한지 확인하세요. –남자 이름8월 16일 19:37
그러나 이 제안은 당시 스코칭을 위한 저장 공간이 충분했기 때문에 불완전했기 때문에 오류를 반환하지 않았습니다.