tar 또는 tar.gz 파일을 더 작은 tar/tar.gz 파일로 다시 패키지합니다.

tar 또는 tar.gz 파일을 더 작은 tar/tar.gz 파일로 다시 패키지합니다.

수백만 개의 파일이 포함된 tar.gz 파일이 있습니다. 파일 개수 상한 때문에 압축을 풀지 않고 내용을 분할하고 싶습니다. tar/tar.gz 파일을 여러 tar/tar.gz로 분할할 수 있는 방법이 있습니까?

이것이 가능하지 않다면 Python을 대신 사용할 수 있습니까?

첫 번째 게시물을 보면 내가 뭔가 잘못하고 있는지 알 수 있습니다.

편집: 다시 합치고 싶지 않습니다. 각 "분할" 파일을 처리할 수 있기를 원합니다.

답변1

분할이 올바른 도구입니다.

파일을 10MB 청크로 분할

split -b10m /path/to/file parts

함께 넣어

cat parts* > file

답변2

를 사용하여 분할할 수 있지만 split부품은 다시 합칠 때까지 아무 의미가 없습니다. 별도의 아카이브로 분할하려면 압축을 풀어야 합니다.

답변3

압축 해제 없이 압축된 아카이브를 여러 조각으로 분할하는 것은 불가능합니다 tar. 압축은 "tar 스트림" 위에 적용되며 스트림은 압축기에 의해 불투명 바이너리 스트림으로 처리됩니다.

따라서 원시 압축 tar 아카이브에서 tar 파일 세트를 생성할 수 있는 모든 도구는 실제로 이를 압축 해제합니다.

하나를 입력으로 사용하고 다른 하나를 출력 파일로 생성하는 및 모드 외에는 tar자체적으로 모드가 없습니다 .tar archivetarappenddelete

tar 아카이브가 상당히 크기 때문에 추출된 각 파일 세트에 대해 별도의 아카이브를 생성하면서 파일을 부분적으로 추출하기 위해 여러 번 압축을 풀고 싶지 않을 것입니다.

하나 있다파이썬 타르 라이브러리이는 "즉시" tar 파일 처리를 허용할 수 있습니다(저는 python이것을 직접 확인하는 데 능숙하지 않습니다). 따라서 소스 아카이브에서 항목을 읽은 다음 크기가 선택한 제한에 도달할 때까지 현재 출력 아카이브에 추가하는 Python 스크립트를 개발할 수 있습니다. 그런 다음 스크립트는 다음 출력 아카이브를 생성하고 계속 진행합니다.

관련 정보