Linux 압축 및 아카이빙

이동명·2023년 10월 31일
0

Cent OS

목록 보기
4/13
post-thumbnail

gzip(GNU zip)

  • 압축 기능을 제공하며, 확장자는 '*.gz'으로 사용한다.

  • 관련 명령어와 옵션은 다음과 같다.

gzip 압축할때 사용하는 명령어

-r 디렉토리이면 하위 디렉토리 및 파일까지 압축

-S 압축 파일을 '*.gz' 파일이 아닌 다른 파일로 생성

-d 압축 해지할때 사용

-f 기존 압축 파일이 있어도 무시하고 압축 파일 생성

-v 압축 통계/진행 출력

-k 원본 파일을 유지하여 압축

gunzip - 압축 해지 및 압축 파일 내용을 확인할때 사용하는 명령어
zcat - 압축 파일 내용을 확인할때 사용하는 명령어

파일 압축


[root@Client1 /root/test]# gzip file1

[root@Client1 /root/test]# gzip -v file2
-> file2: 79.4% -- replaced with file2.gz

[root@Client1 /root/test]# gzip -9v file3
-> file3: 79.5% -- replaced with file3.gz

[root@Client1 /root/test]# gzip -1v file4
-> file4: 76.3% -- replaced with file4.gz

ls -l 
-> 
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file1.gz
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file2.gz
-rw-r--r--. 1 root root 141942 2023-02-06 17:33 file3.gz
-rw-r--r--. 1 root root 163835 2023-02-06 17:33 file4.gz

원본 파일이 텍스트로 구성된 압축 파일 내용 확인

  • 'cat' 명령어로 확인하면 압축 파일은 ASCII TEXT 파일이 아니기 때문에 읽을 수 없는 상태로 출력된다.

압축 해지


 gzip -d file*.gz (압축해지)
 
ls -l 
->-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

디렉토리 안에 있는 파일 압축


ls -l dir1
->
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

gzip -r dir1

ls -l dir1
->
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file1.gz
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file2.gz
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file3.gz
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file4.gz

디렉토리 안에 있는 파일 압축 해지

gzip -rd dir1

ls -l dir1
->

-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

현재 디렉토리 안에 있는 모든 파일 및 디렉토리 압축


ls -lR
->
drwxr-xr-x. 2 root root 58 2023-02-06 17:36 dir1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4
./dir1:
합계 2720
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

du -sh . (디렉토리의 전체 크기를 표시)
-> 5.4M 

gzip -r *
ls -lR
->
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file1.gz
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file2.gz
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file3.gz
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file4.gz
./dir1:
합계 560
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file1.gz
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file2.gz
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file3.gz
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file4.gz

du -sh .
-> 1.1M (압축된 용량)

현재 디렉토리 안에 있는 모든 파일 및 디렉토리 압축 해지


gzip -rd *
ls -lR
->
drwxr-xr-x. 2 root root 58 2023-02-06 17:36 dir1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4
./dir1:
합계 2720
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

du -sh . 
-> 5.4 M (압축 풀린 용량)

원본 파일을 유지하여 압축

gzip -k file1
ls -l
->

-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 142525 2023-02-06 17:33 file1.gz

bzip2(Burrows-Wheeler transform zip)

  • 압축 기능을 제공하며, 확장자는 '*.bz2'로 사용한다.

  • 디렉토리 안에 있는 내용들에 대해서 압축 기능은 제공하지 않는다.

  • 그렇기 때문에 디렉토리 안에 들어가서 압축을 실시해야한다.

  • 관련 명령어와 옵션은 다음과 같다.

bzip2 압축할때 사용하는 명령어

-d 압축 해지할때 사용

-v 압축 통계/진행 출력

-k 원본 파일을 유지하여 압축

bunzip2 : 압축 해지 및 압축 파일 내용을 확인할때 사용하는 명령어

bzcat : 압축 파일 내용을 확인할때 사용하는 명령어

압축 및 해지 명령어는 gzip 과 거의 흡사해서 차이점만 보고 넘어 가겠다.

gzip

  • gzip은 빠르고 압축률이 높은 압축 방법을 제공합니다.

  • 파일을 압축할 때 빠르게 동작하며, 압축된 파일 크기가 작아집니다.

  • .gz 확장자를 가진 파일로 저장됩니다.

  • 단일 파일 또는 디렉토리를 압축할 수 있습니다.

  • 일반적으로 CPU 사용량이 낮고 압축 시간이 빠릅니다.

bzip2

  • bzip2는 gzip보다 더 강력한 압축을 제공하며, 일반적으로 더 작은 파일 크기를 가집니다.

  • 압축 및 압축 해제 속도는 gzip보다 느리지만, 압축률은 더 높습니다.

  • .bz2 확장자를 가진 파일로 저장됩니다.

  • 일반적으로 CPU 사용량이 높고 압축 시간이 더 걸릴 수 있습니다

따라서 gzip은 압축 시간을 줄이고 빠르게 압축된 파일을 생성하는 데 유용하며, bzip2는 파일 크기를 최대한으로 줄이는 데 중점을 둡니다.

TAR(Tape archive)

  • 'tar' 명령어를 사용하여 다수의 파일/디렉토리를 하나의 묶음 파일로 생성한다.

  • 대신, 압축은 실시하지 않기 때문에 gzip, bzip2 를 사용해야 한다.

  • 윈도우에서는 여러파일을 드래그해서 하나의 압축파일을 만들어내는데, 이게 아카이빙 기능이 들어간거임.

-c 아카이빙 실시
-x 아키이빙 해지
-f 아카이빙 파일 지정
-z 아카이빙 이후 gzip 으로 압축
-j 아카이빙 이후 bzip2 로 압축
-v 진행 출력
-t 아키이빙 파일 내용 확인

파일 아카이빙


tar cvf file.tar file1 file2 file3 file4 -> file1~4를 아카이빙함.

->
file1
file2
file3
file4

ls -l
->
-rw-r--r--. 1 root root 2775040 2023-02-06 17:42 file.tar 
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

tar -tf file.tar -> file.tar 에 내용이 뭐뭐 있는지.
->
file1
file2
file3
file4

rm -rf file{1..4} -> tar 말고 다 삭제
ls -l
-> 
-rw-r--r--. 1 root root 2775040 2023-02-06 17:42 file.tar

tar xf file.tar -> 아카이빙 해지
ls -l
->

-rw-r--r--. 1 root root 2775040 2023-02-06 17:42 file.tar
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

아카이빙+gzip 압축 및 해지


tar czf file.tar.gz file* -> (아카이빙 이후 gzip 으로 압축)
ls -l
-> 

-rw-r--r--. 1 root root 569871 2023-02-06 17:46 file.tar.gz
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

rm -rf file{1,2,3,4}
ls -l
-> -rw-r--r--. 1 root root 569871 2023-02-06 17:46 file.tar.gz


tar xzf file.tar.gz -> (아카이빙 해지 후 압축 )
ls -l
->
-rw-r--r--. 1 root root 569871 2023-02-06 17:46 file.tar.gz
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

디렉토리 아카이빙+gzip 압축 및 해지

ls -l
-> 
drwxr-xr-x. 2 root root 58 2023-02-06 17:39 dir1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

tar czf dir.tar.gz dir1 -> dir1 디렉토리를 아카이빙후 gzip 압축
ls -l
-> 
rw-r--r--. 1 root root 569912 2023-02-06 17:48 dir.tar.gz
drwxr-xr-x. 2 root root 58 2023-02-06 17:39 dir1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4


tar tf dir.tar.gz -> 내용표시
->
dir1/
dir1/file1
dir1/file2
dir1/file3
dir1/file4

rm -rf dir1
ls -l
->

-rw-r--r--. 1 root root 569912 2023-02-06 17:48 dir.tar.gz
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4


 tar xzf dir.tar.gz -> 아카이빙 해지 후 gz 압축
 ls -l
 
 -> 
 -rw-r--r--. 1 root root 569912 2023-02-06 17:48 dir.tar.gz
drwxr-xr-x. 2 root root 58 2023-02-06 17:39 dir1 (아카이빙 해지 결과)
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

현재 디렉토리 안에 있는 모든 파일 및 디렉토리 아카이빙+gzip 압축 및 해지


ls -l
->
drwxr-xr-x. 2 root root 58 2023-02-06 17:39 dir1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

tar czf test.tar.gz * -> 아카이빙 후 gz 압축 (현재 디렉토리에 있는 모든 파일과 디렉토리)
ls -l
-> 
drwxr-xr-x. 2 root root 58 2023-02-06 17:39 dir1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4
-rw-r--r--. 1 root root 1139865 2023-02-06 17:50 test.tar.gz

아카이빙 된 파일들은 삭제하자
rm -rf dir1
rm -rf file{1,2,3,4}
ls -l -> 하나남음
-> -rw-r--r--. 1 root root 1139865 2023-02-06 17:50 test.tar.gz

tar xzf test.tar.gz
ls -lR ( 현재 디렉토리와 그 하위 디렉토리에 있는 파일과 디렉토리의 목록 )
-> 
drwxr-xr-x. 2 root root 58 2023-02-06 17:39 dir1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4
-rw-r--r--. 1 root root 1139865 2023-02-06 17:50 test.tar.gz
./dir1:
합계 2720
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

zip

  • 아카이빙과 압축을 동시에 지원한다.

파일 압축

zip file.zip file1 file2 file3 file4
->
adding: file1 (deflated 79%)
 adding: file2 (deflated 79%)
 adding: file3 (deflated 79%)
 adding: file4 (deflated 79%)
 
 
 ls -l
-> 
-rw-r--r--. 1 root root 570578 2023-02-06 17:55 file.zip
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

압축 파일 내용 확인

unzip -l file.zip
->

Archive: file.zip
 Length Date Time Name
--------- ---------- ----- ----
 692252 03-25-2022 18:07 file1
 692252 03-25-2022 18:07 file2
 692252 03-25-2022 18:07 file3
 692252 03-25-2022 18:07 file4
 
 압축 해지

 필요없는거 일단 삭제
 rm -rf file{1,2,3,4}
 
 unzip file.zip
 ->
 Archive: file.zip
 inflating: file1
 inflating: file2
 inflating: file3
 inflating: file4
 
 
 ls -l
 ->
 -rw-r--r--. 1 root root 570578 2023-02-06 17:55 file.zip
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file1
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file2
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file3
-rw-r--r--. 1 root root 692252 2023-02-06 17:33 file4

디렉토리 압축 및 해지

-> 이건 디렉토리를 압축할 뿐 위와 동일함

-r 옵션만 붙이면 됨.

현재 디렉토리 압축 및 해지

이것도 끝에 와일드카드 만 붙이면 디렉토리 다 잡음.

예제나 풀어보자.

Ex1) 아카이빙&압축

- /root/test 디렉토리에 /etc 디렉토리에 있는 파일 중에 conf 로 끝나는 파일을 아카이빙+gzip 압축을 실시하여라.

- 이때, 압축 파일명은 'conf.tar.gz'로 진행한다.

- /root/test 디렉토리에 /var/log 안에 있는 모든 내용을 'log.tar.bz2'로 아카이빙+bz2 압축을 실시하여라.



Ex2) 아카이빙&압축 해제

- /root/test 디렉토리에 'conf.tar.gz' 압축을 해제한다.

- /root/test 디렉토리에 'log.tar.bz2' 압축을 해제한다.

과제로 해보자..

profile
Web Developer

0개의 댓글