Unix에서 폴더를 압축하려고합니다. gzip 명령을 사용하여 수행 할 수 있습니까?

댓글

  • 파일을 재귀 적으로 gzip하는 gzip -r myfolder를 사용할 수 있습니다. 동일한 방법으로 gunzip -r myfolder
  • tar를 사용하세요. 압축 옵션을 지원합니다. . gzip는 대체가 아닌 tar를 보완하도록 설계되었습니다.
  • @ val0x00ff '의 제안은 여러분이 원하는 것이 아닙니다.
  • @Shadur that ' comment가 그의 질문에 대한 답이 아니 었으므로
  • @Shadur의 의미를 시연합니다. 주어진 파일 12 playground 폴더 아래 . gzip -r ./playground1.gz2.gz (더 이상 12 파일) playground 폴더 아래에 있으며 모든 항목이 포함 된 압축 파일이 아닙니다.
  • 답변

    아니요.

    zip와 달리 gzip는 압축 알고리즘으로 기능합니다.

    테이프 드라이브 시대로 거슬러 올라가는 다양한 이유 때문에 Unix는 tar라는 프로그램을 사용하여 데이터를 보관 한 다음 압축 프로그램으로 압축 할 수 있습니다. gzip, bzip2, 7zip

    디렉토리를 “압축”하려면 올바른 명령은 다음과 같습니다.

    tar -zcvf archive.tar.gz directory/ 

    이것은 tar

    p>

    • z (gzip) 알고리즘을 사용하여 압축

    • c (만들기) (tar는 기본적으로 재귀 적입니다.)

    • v (상세) 목록 (/ dev / stderr 따라서 파이프 명령에 영향을주지 않음) 아카이브에 추가하는 모든 파일.

    • 출력을 로 저장합니다. archive.tar.gz

    라는 이름의 f (파일) > tar 명령은 순전히 편의를 위해 gzip 지원 (-z 플래그를 통해)을 제공합니다. . gzip 명령 / lib는 완전히 분리되어 있습니다. 위의 명령은 사실상 동일합니다.

    tar -cv directory | gzip > archive.tar.gz 

    아카이브의 압축을 풀고 현재 디렉토리에 압축을 풀려면

    tar -zxvf archive.tar.gz 

    이 명령은

    gunzip < archive.tar.gz | tar -xv 

    tar에 많은 다른 옵션과 용도도 있습니다. 언젠가 맨 페이지를 읽어 보는 것이 좋습니다.

    댓글

    • 더 명확하게하기 위해 이것은 . 결과 아카이브는 tar -zxvf 또는 zcat file.tar.gz | tar -xv로 추출 할 수 있습니다. 중요한 점은 tar가 gzip과 완전히 독립적이라는 점입니다. tar 명령은 편의상 gzip 지원 만 포함합니다.
    • . 참고할 사항 : Windows (7-zip 지정)를 사용하여 *.tar.gz 파일의 압축을 풀면 두 라운드가 걸립니다. 하나는 *.tar.gz 파일을 *.tar 파일로 압축 해제하고 다음 하나는 tar 파일을 원본 콘텐츠로 압축 해제합니다. 특히 대용량 파일 (예 : 로그)의 경우 총 압축 해제 시간이 늘어납니다.
    • 아카이브 이름 지정이 시스템에 영향을 미칩니 까? 사람들에게 원래 압축에 사용 된 알고리즘 (따라서 .gz)을 알리는 것이 좋을 것이라는 것을 알고 있지만 그 외에는 아카이브 이름을 지정하는 것이 실제로 중요합니까?
    • @hello_there_andy 대부분의 유닉스와는 다르지만, 윈도우 (리눅스의 스마트 탭 완성)는 파일 이름 확장자를 기반으로 가정합니다.
    • @vadimkotov 이것이 당신의 일일 수 있습니다. ' re superuser.com/questions/168749/ …

    Answer

    gzip 명령은 -r 스위치. 오히려 해당 디렉토리 구조를 살펴보고 찾은 각 파일을 별도의 파일로 압축합니다.

    $ tree dir1/ dir1/ |-- dir11 | |-- file11 | |-- file12 | `-- file13 |-- file1 |-- file2 `-- file3 

    이제 gzip 명령

    $ gzip -r dir1 

    이후

    $ tree dir1/ dir1/ |-- dir11 | |-- file11.gz | |-- file12.gz | `-- file13.gz |-- file1.gz |-- file2.gz `-- file3.gz 

    디렉토리 구조를 압축하려는 경우 “tar 명령을 사용한 다음 결과를 압축 할 수 있습니다. .tar 파일.

    $ tar zcvf dir1.tar.gz dir1/ 

    $ tar zcvf dir1.tar.gz dir1/ dir1/ dir1/file1 dir1/file2 dir1/dir11/ dir1/dir11/file11.gz dir1/dir11/file12.gz dir1/dir11/file13.gz dir1/file3 

    다음과 같은 단일 파일이 생성됩니다.

    $ ls -l | grep tar -rw-rw-r-- 1 saml saml 271 Oct 1 08:07 dir1.tar.gz 

    콘텐츠를 확인할 수 있습니다.

    $ tar ztvf dir1.tar.gz drwxrwxr-x saml/saml 0 2013-10-01 08:05 dir1/ -rw-rw-r-- saml/saml 0 2013-10-01 07:45 dir1/file1 -rw-rw-r-- saml/saml 0 2013-10-01 07:45 dir1/file2 drwxrwxr-x saml/saml 0 2013-10-01 08:04 dir1/dir11/ -rw-rw-r-- saml/saml 27 2013-10-01 07:45 dir1/dir11/file11.gz -rw-rw-r-- saml/saml 27 2013-10-01 07:45 dir1/dir11/file12.gz -rw-rw-r-- saml/saml 27 2013-10-01 07:45 dir1/dir11/file13.gz -rw-rw-r-- saml/saml 0 2013-10-01 07:45 dir1/file3 

    답변

    “[Linux에서] gzip을 사용하여 전체 폴더를 압축 할 수 있습니까?”라는 질문에 대한 답변 gzip 대신 zip 프로그램을 다음 구문과 함께 사용할 수 있습니다.

    zip -r <zip file name> <folder to zip> 

    Comments

    • @JeffSchaller : 답입니다. 엄청나게 잘못된 것입니다 (저는 믿습니다).하지만 분명히 답입니다.
    • @ize : I ' 당신이 게시 한 명령은 그렇지 않습니다. 사실, gzip을 사용하십시오.
    • 질문과 같이 zip을 사용하는 것에 대한 포인트, 대부분의 경우 작성자가 알고 싶었을 것입니다. ' 정확한 작업을 수행 할 수 있습니다. 그가 창문에서했던 것과 똑같은 일. 대부분의 사람들이 ' 멀리 생각하고 싶지 않다는 것은 슬픈 일입니다.
    • 질문이 “gzip 사용”을 지정하면 까다 롭습니다.
    • ' 제품 (zip 파일)이 방법 (gzip 사용)보다 더 중요하다고 생각하기 때문에이 답변에 찬성합니다.

    답변

    다음 두 명령을 스크립팅했습니다.

    gzipdir :

    #!/bin/bash if [[ -d $1 ]]; then cd "$1" cd .. base=$(basename "$1") tar -zcvf "$base.tgz" "$base" if [[ $? == 0 && -f "$base.tgz" ]]; then rm -rf "$base" fi else echo "Usage: $0 DIRECTORY"; fi 

    ungzipdir :

    #!/bin/bash if [[ -f $1 ]]; then base=${1%%.*} file=$(basename "$1"); dir=$(basename "$base"); if [[ ! -d $base ]]; then mkdir "$base" cd "$base" cd .. tar -xvf "$file" if [[ $? == 0 && -d "$dir" ]]; then rm -f "$file" fi else echo "Directory $base already exists. Nothing done." fi else echo "Usage: $0 file.tgz"; fi 

    (!!!) 사용하기 전에 테스트하십시오 (흔하지 않은 방식으로 사용하면 중요한 데이터를 잠재적으로 제거 할 수있는 “rm -f”가 있습니다).

    사용 방법 :

    cd /home/; gzipdir MyDirectory 또는 gzipdir /home/MyDirectory

    /home/MyDirectory.tgz를 만들고 성공 (!!!)시 MyDirectory를 제거합니다.

    ungzipdir /home/MyDirectory.tgz

    성공시 / home / MyDirectory를 만들고 /home/MyDirectory.tgz를 제거합니다.

    댓글

    • 디렉토리에있는 모든 파일을 압축하려면 find ./* -maxdepth 0 -type d -exec gzipdir {} \; (찾기 명령에주의하고 -exec echo {} 먼저 캡처하고 ' '를 캡처하고 있지 않은지 확인합니다 ./' PARENT 디렉토리를 압축하여 전체 홈 디렉토리를 깨뜨릴 수 있습니다.

    Answer

    pigz ( GZip의 병렬 구현 )

    tar -cvf - dir | pigz -9 > /path/to/dir.tar.gz 를 사용하는 것이 좋습니다.

    코멘트

    • 나도 많이 사용하지만 (및 pixz) 파이프 및 출력 리디렉션이 작동 할 때 작동합니까?

    답변

    Linux tar가 -z 옵션을 지원하지 않는 경우 다음을 사용할 수 있습니다.

    tar -cvf - dir | gzip > dir.tar.gz 

    Answer

    bac에 파일을 tar하고 싶습니다. kground, @Shadur “의 대답을 사용하고 끝에 &를 추가합니다.

    tar -zcvf archive.tar.gz directory/ & 

    답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다