수백만 개의 파일이 포함된 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 archive
tar
append
delete
tar 아카이브가 상당히 크기 때문에 추출된 각 파일 세트에 대해 별도의 아카이브를 생성하면서 파일을 부분적으로 추출하기 위해 여러 번 압축을 풀고 싶지 않을 것입니다.
하나 있다파이썬 타르 라이브러리이는 "즉시" tar 파일 처리를 허용할 수 있습니다(저는 python
이것을 직접 확인하는 데 능숙하지 않습니다). 따라서 소스 아카이브에서 항목을 읽은 다음 크기가 선택한 제한에 도달할 때까지 현재 출력 아카이브에 추가하는 Python 스크립트를 개발할 수 있습니다. 그런 다음 스크립트는 다음 출력 아카이브를 생성하고 계속 진행합니다.