유닉스 커맨드 라인에서 어떻게 압축 / 압축 해제합니까?


541

명령 행에서 zip 아카이브를 작성하고 추출하려면 어떻게해야합니까?


3
@ joachim, 당신은 질문에 질문을하고 답변에 답변을 제공해야합니다. 자신의 질문에 대답하는 데 아무런 문제가 없지만 질문 자체의 일부는 아닙니다. SO의 전체 커뮤니티 투표에 대한 최상의 답변을 나누기 때문입니다. 또한 이것은 프로그래밍과 관련이 없기 때문에 슈퍼 유저에게 더 적합 할 것입니다.

2
온라인에 접속하는 방법을 어디에 기록하고 로그인을 잊어 버린 경우 어떻게 확인할 수 있습니까?

@ rlb.usa : 저는 많은 다른 서버에서 많은 다른 장소에서 일합니다. 이와 같은 메모에 SA를 사용하면 내가 보는 것처럼 다른 사람들에게도 도움이됩니다.
joachim

답변:


663

일반적으로 tar압축되지 않은 아카이브를 만들고 해당 아카이브를 압축 gzip하거나 bzip2압축하는 데 사용합니다. 해당 gunzipbunzip2명령을 사용하여 해당 아카이브를 압축 해제하거나 tar명령에서 플래그 를 사용하여 압축 해제를 수행 할 수 있습니다 .

Zip 파일 형식을 구체적으로 언급한다면 zipand unzip명령을 사용하면 됩니다.

압축하려면

zip squash.zip file1 file2 file3

또는 디렉토리를 압축

zip -r squash.zip dir1

압축을 풀려면

unzip squash.zip

이것은 현재 작업 디렉토리에서 압축을 풉니 다.


72
나는 개인적으로 zip -r9 archive.zip files...문법 만을 사용 합니다 (-r = recursive -9 = max compression).
amphetamachine

3
참고로, zip많은 다른 .ZIP 아카이브를 생성 할 수있을뿐만 아니라 다양한 압축기를 사용할 수 있습니다. 반면, 7-Zip, gzip, bzip2, rzip 등의 서로 다른 여러 압축 도구는 서로 호환되지 않습니다.
polemon

5
부모 디렉토리를 포함시키지 않으려는 경우 :cd dir1; zip -r ../squash.zip *
Marinos An

혼란 스럽습니다.이 작업을 수행하고 긴 팽창 및 추출 목록을 얻었지만 디렉토리를 확인할 때 비어있는 경우 원래 zip 파일을 저장합니까? 모든 것이 어디입니까?
Summer Developer

11
레코드의 경우 모든 파일을 현재 디렉토리에 직접 넣는 대신 unzip -d myfolder squash.zip별도의 새 디렉토리 ( myfolder) 로 추출 하는 데 사용 하십시오. zip 파일에 최상위 레벨에 많은 파일과 디렉토리가 포함되어 있으면 성 가실 수 있습니다. 이는 대부분의 UI 압축 풀기 도구 작동 방식을 모방합니다.
Alexander Klimetschek

64

진정한 있습니다 방대한 압축하고 난 당신이 일반적인 의미보다는에 "우편"을 의미 가정거야 그래서 UNIX 파생 상품에서의 압축을 해제하는 다른 방법의 수를 특정 파일 형식.

GNU tar프로그램 으로 파일을 압축 형식으로 압축 할 수 있습니다 :

tar -zcvf myfile.tgz .

현재 디렉토리를 수행합니다. 대체 .당신이 뭔가를 원하는 경우 다른 파일 이름.

해당 파일을 압축 해제하려면 다음을 사용하십시오.

tar -zxvf myfile.tgz

물론 tar파일을 하나로 결합하는 것뿐만 아니라 압축을 수행 할 수 있다고 가정 합니다.

그렇지 않다면, 당신은 바로 사용할 수있는 tar cvf다음 gzip압축 (다시 사용 가능한 경우) 및 gunzip다음에 tar xvf.


ZIP 형식 파일의 고유의 처리를 위해, 나는 다운로드 추천 7zip하고를 사용하여 - 그것은 인식 거대한 우편 하나를 포함하는 파일 형식의 다양한.


또는 tar jcvf file.tar.bz2...bzip2 형식으로 압축하거나 tar Jcvf file.tar.xz ...xz 압축에 사용하십시오.
OldTimer

4
tar 파일이 아닌 zip 아카이브를 처리하는 방법에 대한 질문이기 때문에 귀하의 답변을 하향 표명했습니다.
불가사리

3
@Starfish, 그것은 확실히 당신의 권리 안에 있습니다. 최소한 왜 그런지 설명하지 못해서 감사합니다. 많은 사람들이 그렇게하지 않는 데 시간이 걸리지 않습니다. 더 명확하게하겠습니다.

다른 플랫폼, Mac에서 Linux로 또는 그 반대로 이동할 때 tar 아카이브가 올바르게 작동하지 않을 수 있습니다. Zip은 모든 시스템에서 올바르게 작동하므로 훨씬 안전합니다.
user1751825

기술적으로 이것이 gzip이라고 가정하면 좋습니다. 나는 추측한다. 분명히 질문이 요구 한 것은 아닙니다.
Owl

30

압축 및 압축 해제 패키지가 설치되어 있지 않고 Java가있는 경우 jar압축을 해제 하는 데 사용할 수 있습니다 .

jar -xf file.zip

3
내 서버, 압축 풀기, 지퍼, 7z, 아무것도 아닙니다 ... 그리고 이것은 효과가있었습니다. 감사!
다리우스

2
이것은 좋은 팁입니다.
불가사리

29

다양한 운영 체제 용 파일을 배포 할 때는 7-zip을 권장 합니다.

일반적으로 package p7zip에는 7zand 7za명령이 있으며 자체 7z 아카이브를 만들 수 있습니다.

7za또한 표준 ( zipzip ) zip 아카이브를 압축 해제 할 수 있으며 -tzip스위치를 사용하여 생성 할 수도 있습니다 .

압축 :

7za a archive.7z file1 file2 directory/

압축 해제 :

7za x archive.7z

-sfx스위치를 사용하여 자동 압축 풀림 아카이브를 만들 수도 있습니다 .

7za a -sfx archive.exe files1 file2 dir

Windows 사용자가 7z 아카이브를 열 수없는 경우이 방법을 권장합니다 ( PeaZip에 대한 도구를 조언하려는 경우 ).

tarball과 동일한 압축 알고리즘을 사용하려면 -J스위치를 tar다음 과 함께 사용하십시오 .

tar cJf archive.tar.xz file1 file2 dir

xz압축 LZMA2를 사용하지만 작동하는 방식을 유닉스 도구입니다 gz, bz2등 작품. 심지어 필터로도 작동합니다.

7z는 UNIX에서 전체 파일 시스템 정보가 포함 된 아카이브를 만들지 않으므로 7z를 사용 tar하기 전에 사용해야합니다 (하지만 7z는 tar파일 에 대한 다른 정보를 저장하기 때문에 xz,이를 위해 설계된대로 사용하는 것이 좋습니다 ).

tar cf - file1 file2 dir | 7za z -si archive.tar.7z

2
이 답변에을 추가해야합니다 atool. 많은 다른 압축기를보다 편안하게 사용하는 멋진 작은 도구입니다. 해당 바인딩 a및 아카이브를 만들면됩니다 a arc.7z folder/또는 간단한 추출a arc.7z
폴몬

21
unzip <filename>

zip -r archive.zip <filename> [filename]

이러한 명령이 패키지 관리자를 통해 설치되어 있는지 확인해야합니다. 커맨드 라인에서 다른 것을 사용하는 것보다 어렵지 않습니다. tar로 아카이브를 만드는 것보다 확실히 간단합니다.


나는 이것이 오래된 스레드라는 것을 알고 있지만 이것이 가장 좋은 대답입니다. 7z 나 tar에 대해서는 간결하고 정확하게 설명하지 않습니다.
Kyle

4

BSD Tar도 이것을 할 수 있습니다

bsdtar acf bravo.zip alfa.jpg

또는:

bsdtar xf bravo.zip

BSD tar는 GNU tar및 기타에 비해 상당히 많은 추가 압축 형식을 지원한다는 이점이 있습니다 tar. 가장 큰 이점은 아마도 유사한 구문 을 사용하는 것tar 입니다. 당신은 확실히 사용할 수 있습니다 7z, unrar, unzip명령 줄에서, 등,하지만 그들은 사용하는 다른 구문을.
njsg

3

가장 표준적인 답변은 및 pax이상 권장 됩니다.cpiotar

달리 cpioPOSIX하고 tar있지만, GNU처럼 tar, pax압축 파일과 압축 파일을 압축을 모두 할 수 있습니다. 이 동작은과 다르 zip므로 아카이브에 넣기 전에 각 파일을 압축합니다.


1
paxZip 아카이브를 지원 합니까 ?
불가사리

아뇨, 그리고 pax아카이브도 지원하지 않습니다 !
roblogic

2

추출에만 해당됩니다.

이를 위해을 사용하기 시작했습니다 dtrx.

그것의 요점은 복잡성을 제거하는 것입니다. 따라서 모든 아카이브를 전달하고 수행해야 할 작업을 파악합니다. Zip, tar, gz ... 사용은 항상 동일합니다 — dtrx archive.zip. 몇 가지 질문을하면 끝입니다.

dtrx대부분의 리포지토리에서 사용할 수 있으므로 apt| yum설치하십시오.


1

수정 된 파일을 다른 샌드 박스 작업 디렉토리에 복사하거나 일부 변경 사항을 취소하고 싶기 때문에 잠시 동안 보존하기 위해 작업 디렉토리에 수정 된 파일을 압축하려고 시도하는 경우가 종종 있습니다.

이 경우 수정 된 파일 목록을 임시 파일로 복사 zip하고 옵션과 함께 사용 합니다 -@.

Foo.h, Bar.cc 및 TestBar.cc 파일을 수정했다고 가정 해 봅시다.

내용이 다음과 같은 modified-files.txt라는 파일을 생성한다고 가정 해 보겠습니다.

Foo.h
Bar.cc
TestBar.cc

해당 파일을 압축하기 위해 다음 명령을 실행합니다.

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