Linux에서 멀티 파트 (스팬) ZIP을 압축 해제하는 방법은 무엇입니까?


73

400mb 파일을 웹 서버에 업로드해야하지만 200mb 업로드로 제한됩니다. 호스트는 Linux에서 한 번도 해본 적이없는 스팬 아카이브를 사용하도록 제안했습니다.

나는, 자신의 폴더에 테스트를 생성으로 PDF를 압축하는 test.zip.001, .002하고 .003. 압축을 풀려면 어떻게해야합니까? 먼저 가입해야합니까?

ZIP 형식을 사용하는 것처럼 7z를 사용하는 것만 큼 행복합니다. 이것이 결과에 영향을 미치는 경우.


제한된 소프트웨어가 설치된 웹 서버에서는 도움이되지 않을 수 있지만 다른 곳에서는이 솔루션을 보지 못했고 사용하는 방법은 다음과 같습니다. java.util.zip API는 내가 던진 모든 ZIP 부분을 처리했습니다. 더 일반적인 경우에도 후행 부품이 없거나 마지막 부품이 불완전한 경우에도 마찬가지입니다. :이 스크립트의 형태로, 그리고 여기에 코드 그래서 나는 자이 썬에서 호출 github.com/combatopera/unzipparts
의 Andrzej Cichocki

답변:


74

먼저 가입해야합니다. cat아래 예제 와 같이 일반적인 Linux 앱을 사용할 수 있습니다 .

cat test.zip* > ~/test.zip

이것은 당신의 모든 연결할 것 test.zip.001, test.zip.002하나 더, test.zip 파일로 등 파일을. 단일 파일이 있으면 다음을 실행할 수 있습니다.unzip test.zip

"Linux에서 zip 아카이브를 생성, 분할, 결합 및 추출하는 방법" 이 도움이 될 수 있습니다.


1
좋아, 나는 그것을 좋아한다 ... 진보 ... 그러나 나는 정말로 여기에 리눅스 n00b이다. x*파일 이름 이라고 가정 합니까? 그리고 ~/hugefile디렉토리입니까? 물결표 기호의 목적은 무엇입니까? 내가 가장 기본적인 질문이라고 생각하는 것이 유감입니다.
Tim

파일을 분할 할 때는 물결표가 홈 디렉토리를 나타내는 x_와 같은 접두사 (예 : x_split1, x_split2, ...; Windows 접미사 file.001, file.002 ... 등)를 사용해야합니다. ~ / hugefile은 / home / tim / hugefile과 동일합니다. 파일을 분할 했습니까? 분할 파일 이름은 무엇입니까?
fromnaboo

1
나는 문제가에 올 경우, 스팬 아카이브가 ZIP 확장자 7zip과를 사용하여 윈도우에서 만든 참조 생각, 그래서 자동으로 생성 TEST.zip.001, TEST.zip.002TEST.zip.003분할이 매우 다르다하는 것을 의미한다. VMWare에서 리눅스를 던지고 여기에 파일을 만드는 것이 더 쉬울 것 같았습니다. 적어도 나는 1 개의 OS 만 다루고 있습니다. 모든 파일 형식에서 SPLIT 명령을 사용할 수 있습니까? 이미지, 오디오 영화 등?
Tim

예, split 명령은 모든 파일에서 작동합니다. apt-get을 사용하여 p7zip을 설치하십시오. debian 또는 yum에 p7zip을 설치하십시오. 페도라에 p7zip을 설치하고, cat TEST.zip. *> archive로 파일을 결합하고 압축을 푸십시오.
fromnaboo

1
7za x archive아카이브에 디렉토리 구조가 포함되어 있으면 더 좋습니다.
slm

38

Linux unzip유틸리티는 실제로 멀티 파트 zip을 지원하지 않습니다. 로부터 수동 :

zip과 함께 제외하고 다중 파트 아카이브는 아직 지원되지 않습니다. (모든 부품은 순서대로 함께 연결 한 다음 연결된 아카이브에서 ( zip -F zip 2.x의 경우) 또는 zip -FF(zip 3.x의 경우) 압축을 수행하여이를 수정해야합니다. 또한 zip 3.0 이상을 결합 할 수 있습니다. 을 사용하여 멀티 파트 (분할) 아카이브를 결합 된 단일 파일 아카이브로 zip -s- inarchive -O outarchive만듭니다 (자세한 내용은 zip 3 매뉴얼 페이지 를 참조하십시오).

따라서 먼저 조각을 연결 한 다음 결과를 복구해야합니다. 와일드 카드 가 임의의 문자 시퀀스를 나타내는 곳 cat test.zip.*이라는 모든 파일을 연결합니다 . 파일은 사전 식 순서로 열거되며 선행 0으로 인해 숫자 순서와 동일합니다. 출력을 파일로 보냅니다 .test.zip.**>test.ziptest.zip

cat test.zip.* >test.zip
zip -FF test.zip --out test-full.zip
unzip test-full.zip

공식 Pkzip 유틸리티를 사용하여 멀티 파트 zip을 생성하는 것과 달리 zip 파일을 직접 분할하여 피스를 생성 한 경우 파트를 결합하면됩니다.

cat test.zip.* >test.zip
unzip test.zip

1
두 번째 명령은 zip이어야합니다 -FF test.zip --out test-full.zip---out 명령없이 오류가 발생합니다
Alvin

3
나를 위해, FF내가 지적하면 접근 방식은 일 zip없는 최초의 멀티 파트 파일에 cat필요합니다.
Jānis Elmeris

1
@ JānisElmeris가 이미 언급했듯이, 아카이브를 사용하기 전에 아카이브를 연결할 필요가 없습니다 zip -FF.
René

24
7z x archive.zip.001

나머지를 자동으로 찾습니다.


1
너무 이상합니다 ...이 기능을 사용하려면 먼저 모든 ZIP 파일 (.zXX 및 .zip)의 이름을 .zip.xxx (.zip은 마지막 부분)로 바꾸어야합니다. 그런 다음 첫 번째 파일에서 7z x를 사용할 수 있습니다 는 압축 해제 된 압축으로 압축을 풀고 7z가 아닌 압축 해제를 사용하여 다시 압축을 풀 수 있습니다. 파일이 올바르게 압축 해제되었는지는 확실하지 않지만 이번에는 압축 해제가 CRC 오류에 대해 불만을 표시하지 않습니다. ZIP은 Linux에서 엄청나게 손상되었으므로 가능하면 피하십시오. :(
Energiequant

적어도 centos의 경우 7z를 설치하는 방법에 대한 지침도 필요합니다
stiv

20

https://superuser.com/a/517758/10264 에서 답을 찾았습니다.

이 답변은 Gilles 와 개념이 비슷합니다. 먼저 split 아카이브를 split을 사용하여 일반 아카이브로 결합한 다음 unzip을 사용하여 압축을 풉니 다.

차이점은 -FF저에게 효과적이지 않은 플래그 를 사용하는 대신 분할하지 않고 분할 파일을 다시 압축하도록 zip에 지시한다는 것입니다. 그것이 -s 0깃발의 의미입니다.

먼저 분할 아카이브를 단일 아카이브로 결합하십시오.

zip -s 0 split-foo.zip --out unsplit-foo.zip

그런 다음 unzip을 사용하여 단일 아카이브를 추출하십시오.

unzip unsplit-foo.zip

2
이 우편 3.x에 대한 정답
texasbruce

0

또 다른 예입니다. 이것은 3GB oracle 설치 프로그램을 분할하기 위해 bash에서 나를 위해 일했습니다.

echo "<installOracleDB.sh>: Splitting OracleDB installer"
zip /tmp/linuxx64_12201_database.zip --out /tmp/linuxx64_12201_oradb.zip -s 1000m
echo "<installOracleDB.sh>: Merging OracleDB installer"
zip -FF /tmp/linuxx64_12201_oradb.zip --out /tmp/linuxx64_12201_database.zip
echo "<installOracleDB.sh>: Removing temporary files OracleDB installer"
find /tmp -type f -name 'linuxx64_12201_oradb*' -exec rm {} +
echo "<installOracleDB.sh>: Unizipping OracleDB installer"
unzip /tmp/linuxx64_12201_database.zip

이것은 이전 답변과 매우 유사합니다. 현재하고있는 일과 이미 게시 된 내용과 어떻게 다른지 설명 할 수 있습니까? 의견에 응답하지 마십시오. 명확하고 완전하게 답변을 편집 하십시오.
Scott

안녕 스코틀랜드, 나는 의견에 대답 할 수 있기를 바랍니다.하지만 지금은 그렇게 할 작은 포인트가 있습니다. 이 답변은 유닉스에서 큰 파일을 분할, 병합 및 압축 해제하는 명령의 전체 목록을 제공합니다. 답변을 명확히하기 위해 더 많은 설명을 제공 할 것입니다. 당신의 답변에 감사드립니다.
TheHagueCoder

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.