다중 세그먼트 아카이브를 생성하기 위한 "zip" 명령에 어떤 문제가 있습니까?

다중 세그먼트 아카이브를 생성하기 위한 "zip" 명령에 어떤 문제가 있습니까?

보고 있다이것zip질문, 파일 관리자 컨텍스트 메뉴의 명령을 사용하여 여러 개의 20MB zip 파일(gmail 메시지가 허용되는 수준)을 생성할 수 있는지 궁금합니다 . 이 질문에 대한 대답은 여러 파일을 쉽게 만들 rar수 있다는 것을 나타내지만 파일에 액세스할 수 있는지 7z알고 싶습니다 .zip

제안된 것과 같은 명령여기작동해야합니다. 터미널과 Thunar 사용자 정의 작업 모두에서 이 명령을 사용하면 동일한 결과가 나타납니다.

zip my_archive.zip -r /path/to -s 20m

Thunar 버전은

zip my_archive.zip -r %f -s 20m

그러나 생성된 아카이브(my_archive.z01, my_archive.z02, my_archive.z03..., my_archive.zip)을 열 수 없습니다.

어쩌면 내가 볼 때 이것은 예상된 것일 수도 있다.여기이렇게 생성된 파일은 다음 명령을 사용하여 "압축을 풀기" 전에 "압축을 풀어야" 합니다.

 zip -s 0 my_archive.zip --out unsplit.zip

(말해야겠습니다. 일반적으로 다른 다중 파일 아카이브는 추출하기 전에 다시 결합할 필요가 없으며 아카이브 분할도 직접 추출할 수 있는 여러 아카이브 볼륨을 제공하기 때문에 이 작업을 수행할 필요가 있을 것이라고는 예상하지 못했습니다. 그러나 hjsplit그것은 또 다른 이야기입니다. .)

unsplit.zip파일을 추출할 때에도 오류가 발생한다는 것입니다 .

$ unzip unsplit.zip
Archive:  unsplit.zip
  inflating: home/cip/Desktop/R/Interviu/20170918.3gpp  
  error:  invalid compressed data to inflate

inflating아카이브는 추출할 수 없지만 열 수 있으며(아카이브 관리자 내에서 탐색) 이상한 폴더 내 폴더 구조를 가지고 있습니다( 위 줄에 표시된 대로 원래 생성된 경로를 반영 ).

뭐가 문제 야?

답변1

이것은알려진 문제in zip: 내부 버퍼 크기(16KiB)의 배수로 분할된 아카이브를 재조립할 수 없습니다. 이제 서로 다른 크기로 분할해야 합니다. 귀하의 경우 20971519(20MiB - 1바이트)가 제대로 작동합니다.

(분할된 아카이브를 수동으로 재조립하려고 시도했지만 zip -FF아카이브 구성 요소를 찾아도 결합된 파일이 수정되지 않았습니다.)

그것은 밝혀문서 롤러분할 보관이 지원되므로(분할 보관 형식을 따르지 않음) 수신자가 모두 사용하는 경우(또는 다른 보관자가 사용하는 경우)무료 아카이브) split또는 유사한 도구를 사용하여 아카이브를 분할할 수 있습니다. 이렇게 하려면 split기본 접미사 등을 사용해야 합니다 aa. makefile ab:

split -b20m archive.zip split.z

그런 다음 파일 롤러를 사용하면 split.zaa전체 아카이브를 투명하게 열고 추출할 수 있습니다(모든 조각이 눈에 띄게 존재하는 한).

관련 정보