유닉스에서 폴더를 압축하려고 합니다. gzip 명령을 사용하여 이 작업을 수행할 수 있습니까?
답변1
아니요.
zip
와 달리 gzip
압축 알고리즘으로 작동합니다.오직.
여러 가지 이유로(일부는 테이프 드라이브 시대로 거슬러 올라갑니다) Unix는 아카이브 데이터라는 프로그램을 사용합니다 . 이 프로그램은 tar
, , 와 같은 압축 프로그램을 사용하여 압축 할 수 gzip
있습니다 .bzip2
7zip
디렉토리를 "압축"하려면 올바른 명령은 다음과 같습니다.
tar -zcvf archive.tar.gz directory/
이것이 tar
말해 줄 것이다
그것을 사용하여 압축지(gzip) 알고리즘
씨(만들기) 다음에서 아카이브
directory
(tar
기본값은 재귀적입니다)V아카이브에 추가하는 모든 파일을 (세부적으로) (/dev/stderr에서, 파이프된 명령에 영향을 주지 않도록) 나열합니다.
출력을 다음과 같이 저장합니다.에프(파일) 이름이 지정됨
archive.tar.gz
이 tar
명령은 순전히 사용자의 편의를 위해 플래그를 gzip
통해 지원을 제공합니다 -z
. /lib 명령 gzip
은 완전히 독립적입니다. 위의 명령은 실제로 다음과 같습니다.
tar -cv directory | gzip > archive.tar.gz
아카이브의 압축을 풀고 현재 디렉토리에 추출하려면 다음을 사용할 수 있습니다.
tar -zxvf archive.tar.gz
이 명령은 실제로 다음과 같습니다.
gunzip < archive.tar.gz | tar -xv
tar
그 밖에도 수많은 옵션과 용도가 있습니다. 가끔 맨페이지를 읽어 보시기를 진심으로 권장합니다.
답변2
이 스위치를 사용할 때 gzip
명령은 디렉터리를 단일 zip 파일로 재귀적으로 압축하지 않습니다. -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
답변3
"[Linux에서] gzip을 사용하여 전체 폴더를 압축할 수 있습니까?"라는 질문에 대한 대답은 zip
다음 구문을 사용하여 gzip 대신 이 프로그램을 사용할 수 있다는 것입니다.
zip -r <zip file name> <folder to zip>
답변4
나는 pigz
(GZip의 병렬 구현)
tar -cvf - dir | pigz -9 > /path/to/dir.tar.gz