압축 기능을 제공하며, 확장자는 '*.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
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
압축 기능을 제공하며, 확장자는 '*.bz2'로 사용한다.
디렉토리 안에 있는 내용들에 대해서 압축 기능은 제공하지 않는다.
그렇기 때문에 디렉토리 안에 들어가서 압축을 실시해야한다.
관련 명령어와 옵션은 다음과 같다.
bzip2 압축할때 사용하는 명령어
-d 압축 해지할때 사용
-v 압축 통계/진행 출력
-k 원본 파일을 유지하여 압축
bunzip2 : 압축 해지 및 압축 파일 내용을 확인할때 사용하는 명령어
bzcat : 압축 파일 내용을 확인할때 사용하는 명령어
압축 및 해지 명령어는 gzip 과 거의 흡사해서 차이점만 보고 넘어 가겠다.
gzip은 빠르고 압축률이 높은 압축 방법을 제공합니다.
파일을 압축할 때 빠르게 동작하며, 압축된 파일 크기가 작아집니다.
.gz 확장자를 가진 파일로 저장됩니다.
단일 파일 또는 디렉토리를 압축할 수 있습니다.
일반적으로 CPU 사용량이 낮고 압축 시간이 빠릅니다.
bzip2는 gzip보다 더 강력한 압축을 제공하며, 일반적으로 더 작은 파일 크기를 가집니다.
압축 및 압축 해제 속도는 gzip보다 느리지만, 압축률은 더 높습니다.
.bz2 확장자를 가진 파일로 저장됩니다.
일반적으로 CPU 사용량이 높고 압축 시간이 더 걸릴 수 있습니다
따라서 gzip은 압축 시간을 줄이고 빠르게 압축된 파일을 생성하는 데 유용하며, bzip2는 파일 크기를 최대한으로 줄이는 데 중점을 둡니다.
'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
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
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
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 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' 압축을 해제한다.
과제로 해보자..