tar 디렉토리는 특정 크기 이하의 독립적인 아카이브 파일로 구분됩니다.

tar 디렉토리는 특정 크기 이하의 독립적인 아카이브 파일로 구분됩니다.

많은 파일이 포함된 디렉토리가 있습니다. 전체적으로 이러한 파일은 수 기가바이트의 공간을 차지합니다. 이 디렉토리를 압축하고 싶습니다.

하지만 디렉터리를 단일 파일로 압축하면 파일 이동이 어려워지므로 여러 파일을 원합니다.

나는 다음을 사용할 수 있습니다 :

tar cvzf - dir/ | split --bytes=200MB - sda1.backup.tar.gz.

하지만 데이터를 복구하려면 모든 백업 파일이 필요할까봐 걱정됩니다. 나는 각 파일이 소스 데이터의 일부를 포함하는 자체적이고 독립적인 단위가 되는 것을 선호합니다.

제가 생각할 수 있는 한 가지 방법은 각 입력 파일의 크기를 계산하고 최대 크기에 도달할 때까지 파일을 목록에 탐욕스럽게 추가하는 스크립트를 작성하는 것입니다. 그런 다음 파일 목록을 tar하고 새 목록을 시작하십시오. 모든 파일이 tar에 포함될 때까지 이 작업을 반복합니다. 그런 다음 타르를 독립적으로 추출할 수 있습니다.

이것은 다른 질문과 중복되지 않습니다. 전체 아카이브의 각 부분이 그 자체로 유효한 아카이브이고 각 파일이 필요 없이 다시 작성될 수 있는 방식으로 이 작업을 수행하는 방법이 특히 궁금하기 때문입니다. 공동 아카이브.

이런 일을 할 수 있는 유틸리티가 있나요?

답변1

tar분할 후 부분 파일 처리가 가능합니다. 이러한 아카이브의 일부를 복원하려고 하면 처음에는 사용할 수 없는 항목은 건너뛰고 마지막에는 그 사이의 모든 부분이 올바르게 복원될 것이라고 알려줍니다. tar테이프 길이 옵션을 사용하여 아카이브를 생성할 때 아카이브를 분할하도록 지시할 수 있습니다 .최대 크기의 청크로 나누어 tar 아카이브를 생성합니다.더 알아보기.

이보다 더 좋고 독립적인 아카이브 부분을 생성할 수 있는 유틸리티가 있습니다(크기 제한이 아카이브에 가장 큰 파일을 저장할 만큼 충분히 큰 경우). 불행하게도 내가 아는 유틸리티는 모든 요구 사항을 충족하지 않습니다. 대부분의 플랫폼에서 사용 가능zipsplitzip 파일을 분할할 수 있지만 최대 2GB의 아카이브만 처리할 수 있습니다. 프로그램 9에는tarsplittarball을 분할하지만 사용 중인 시스템에 쉽게 이식할 수 있는지 확실하지 않습니다(Plan 9를 사용하지 않는 것 같습니다...).

관련 정보