유닉스에서 폴더를 압축하려고합니다. 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
. 명령 gzip
/lib는 완전히 별개입니다. 위의 명령은 사실상 다음과 동일합니다.
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