압축 및 아카이빙

oogu ㅣ 2022. 4. 3. 16:44

@ 압축 및 아카이빙

 - 윈도우 압축(Ex : zip, alz, egg...)처럼 사용하려면 아카이빙을 실시하여 파일을 하나로 묶은 다음에 압축을 실시해야 한다.

압축을 하는 이유

  • 용량을 줄이기 위해, 백업하기위해

1. gzip

 - 압축 기능을 제공하며, 확장자는 '*.gz'으로 사용한다.
 - 관련 명령어 

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

               -r 디렉토리이면 하위 디렉토리 및 파일까지 압축
               -S 압축 파일을 '*.gz' 파일이 아닌 다른 파일로 생성
               -d  압축 해지할때 사용
               -f 기존 압축 파일이 있어도 무시하고 압축 파일 생성
               -v 압축 통계/진행 출력, 1v~9v -> 번호가 높을수록 압축률이 좋다.
               -k 원본 파일을 유지하여 압축


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

[root@Client1 /root]# cd
[root@Client1 /root]# rm -rf test
[root@Client1 /root]# mkdir test
[root@Client1 /root]# cd test
[root@Client1 /root/test]# 
[root@Client1 /root/test]# cp /etc/services file1
[root@Client1 /root/test]# cp /etc/services file2
[root@Client1 /root/test]# cp /etc/services file3
[root@Client1 /root/test]# cp /etc/services file4
[root@Client1 /root/test]# 
[root@Client1 /root/test]# ls -l
합계 2512
-rw-r--r--. 1 root root 641020 2020-12-24 20:56 file1
-rw-r--r--. 1 root root 641020 2020-12-24 20:56 file2
-rw-r--r--. 1 root root 641020 2020-12-24 20:56 file3
-rw-r--r--. 1 root root 641020 2020-12-24 20:56 file4

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

[root@Client1 /root/test]# gzip -v file2 (기본값 -6)
file2:   80.2% -- replaced with file2.gz

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

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

[root@Client1 /root/test]# ls -l         
합계 524
-rw-r--r--. 1 root root 127220 2020-12-24 20:56 file1.gz
-rw-r--r--. 1 root root 127220 2020-12-24 20:56 file2.gz
-rw-r--r--. 1 root root 126611 2020-12-24 20:56 file3.gz
-rw-r--r--. 1 root root 146158 2020-12-24 20:56 file4.gz

[root@Client1 /root/test]# rm -rf file*

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

[root@Client1 /root/test]# mkdir dir1
[root@Client1 /root/test]# cd dir1
[root@Client1 /root/test/dir1]# cp /etc/services file1
[root@Client1 /root/test/dir1]# cp /etc/services file2
[root@Client1 /root/test/dir1]# cp /etc/services file3
[root@Client1 /root/test/dir1]# cd ..
[root@Client1 /root/test]# 
[root@Client1 /root/test]# ls -l dir1
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

[root@Client1 /root/test]# du -sh dir1
1.9M    dir1

[root@Client1 /root/test]# gzip -r dir1

[root@Client1 /root/test]# ls -l dir1
합계 384
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file1.gz
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file2.gz
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file3.gz

[root@Client1 /root/test]# du -sh dir1 
388K    dir1

 - 압축 파일 내용 확인

[root@Client1 /root/test/dir1]# gunzip -c file1.gz
[root@Client1 /root/test/dir1]# zcat -c file1.gz

 - 압축 해제

[root@Client1 /root/test/dir1]# cd ..
[root@Client1 /root/test]# gzip -rd dir1
[root@Client1 /root/test]# ls -l dir1   
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

[root@Client1 /root/test]# cd dir1
[root@Client1 /root/test/dir1]# gzip file1
[root@Client1 /root/test/dir1]# gzip file2
[root@Client1 /root/test/dir1]# gzip file3
[root@Client1 /root/test/dir1]# ls -l
합계 384
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file1.gz
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file2.gz
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file3.gz

[root@Client1 /root/test/dir1]# gzip -d file1.gz 
[root@Client1 /root/test/dir1]# gzip -d file2.gz  
[root@Client1 /root/test/dir1]# gzip -d file3.gz   
[root@Client1 /root/test/dir1]# ls -l
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

 - 다수의 파일 압축 및 해지

[root@Client1 /root/test/dir1]# gunzip *.gz 또는 gunzip file*.gz
[root@Client1 /root/test/dir1]# ls -l
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

 

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

[root@Client1 /root/test]# gzip -k file1
[root@Client1 /root/test]# ls -l
합계 2860
drwxr-xr-x. 2 root root     58 2022-05-27 10:05 dir1
-rw-r--r--. 1 root root 692252 2022-05-27 09:47 file1
-rw-r--r--. 1 root root 142525 2022-05-27 09:47 file1.gz
-rw-r--r--. 1 root root 692252 2022-05-27 09:47 file2
-rw-r--r--. 1 root root 692252 2022-05-27 09:47 file3
-rw-r--r--. 1 root root 692252 2022-05-27 09:47 file4
[root@Client1 /root/test]# 
[root@Client1 /root/test]# rm -rf file1.gz



2. bzip2 - gzip보다 압축이 좋음

 - 압축 기능을 제공하며, 확장자는 '*.bz2'로 사용한다.
 - 디렉토리 안에 있는 내용들에 대해서 압축 기능은 제공하지 않는다. 
 - 관련 명령어 

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

             -d  압축 해지할때 사용
             -v 압축 통계/진행 출력

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


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

[root@Client1 /root/test/dir1]# ls -l
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

[root@Client1 /root/test/dir1]# bzip2 file1
[root@Client1 /root/test/dir1]# bzip2 file2
[root@Client1 /root/test/dir1]# bzip2 -k file3
[root@Client1 /root/test/dir1]# ls -l
합계 976
-rw-r--r--. 1 root root 115774 2020-12-24 21:02 file1.bz2
-rw-r--r--. 1 root root 115774 2020-12-24 21:02 file2.bz2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
-rw-r--r--. 1 root root 115774 2020-12-24 21:02 file3.bz2

 - 압축 파일 내용 확인

[root@Client1 /root/test/dir1]# bunzip2 -c file1.bz2
[root@Client1 /root/test/dir1]# bzcat file1.bz2

 - 압축 해지

[root@Client1 /root/test/dir1]# bzip2 -d file1.bz2
[root@Client1 /root/test/dir1]# bzip2 -d file2.bz2
[root@Client1 /root/test/dir1]# bunzip2 file3.bz2 
bunzip2: Output file file3 already exists.

[root@Client1 /root/test/dir1]# ls -l
합계 2000
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
-rw-r--r--. 1 root root 115774 2020-12-24 21:02 file3.bz2

[root@Client1 /root/test/dir1]# rm -rf file3
[root@Client1 /root/test/dir1]# bunzip2 file3.bz2 
[root@Client1 /root/test/dir1]# ls -l
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3


3. 아카이빙 -> 용량이 안줄어든다

 - 'tar' 명령어를 사용하여 다수의 파일을 하나의 묶음 파일로 생성한다.
 - 대신, 압축은 실시하지 않기 때문에 gzip, bzip2를 사용해야 한다.

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

[root@Client1 /root/test/dir1]# tar cvf file.tar file1 file2 file3
file1
file2
file3

[root@Client1 /root/test/dir1]# ls -l
합계 3776
-rw-r--r--. 1 root root 1935360 2020-12-24 21:26 file.tar
-rw-r--r--. 1 root root  641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root  641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root  641020 2020-12-24 21:02 file3

[root@Client1 /root/test/dir1]# tar tf file.tar 
file1
file2
file3

[root@Client1 /root/test/dir1]# rm -rf file1 file2 file3
[root@Client1 /root/test/dir1]# ls -l
합계 1892
-rw-r--r--. 1 root root 1935360 2020-12-24 21:26 file.tar

[root@Client1 /root/test/dir1]# tar xvf file.tar
file1
file2
file3

[root@Client1 /root/test/dir1]# ls -l
합계 3776
-rw-r--r--. 1 root root 1935360 2020-12-24 21:26 file.tar
-rw-r--r--. 1 root root  641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root  641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root  641020 2020-12-24 21:02 file3

[root@Client1 /root/test/dir1]# rm -rf file.tar


 - 아카이빙 및 gzip 압축 및 해지

[root@Client1 /root/test/dir1]# tar czf file.tar.gz file1 file2 file3
[root@Client1 /root/test/dir1]# ls -l
합계 2260
-rw-r--r--. 1 root root 381983 2020-12-24 21:30 file.tar.gz
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

[root@Client1 /root/test/dir1]# tar tf file.tar.gz
file1
file2
file3

[root@Client1 /root/test/dir1]# rm -rf file1 file2 file3
[root@Client1 /root/test/dir1]# tar xzf file.tar.gz 
[root@Client1 /root/test/dir1]# ls -l
합계 2260
-rw-r--r--. 1 root root 381983 2020-12-24 21:30 file.tar.gz
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

[root@Client1 /root/test/dir1]# rm -rf file.tar.gz 


 - 아카이빙 및 bzip2 압축 및 해지

[root@Client1 /root/test/dir1]# tar cjf file.tar.bz2 file1 file2 file3
[root@Client1 /root/test/dir1]# ls -l
합계 2140
-rw-r--r--. 1 root root 260725 2020-12-24 21:34 file.tar.bz2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

[root@Client1 /root/test/dir1]# rm -rf file1 file2 file3

[root@Client1 /root/test/dir1]# tar xjf file.tar.bz2 
[root@Client1 /root/test/dir1]# ls -l
합계 2140
-rw-r--r--. 1 root root 260725 2020-12-24 21:34 file.tar.bz2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

[root@Client1 /root/test/dir1]# rm -rf file.tar.bz2 


4. zip

 - 윈도우에서 사용하는 zip 압축 기능

[root@Client1 /root/test/dir1]# zip file.zip file1 file2 file3
  adding: file1 (deflated 80%)
  adding: file2 (deflated 80%)
  adding: file3 (deflated 80%)

[root@Client1 /root/test/dir1]# ls -l
합계 2260
-rw-r--r--. 1 root root 382024 2020-12-24 21:37 file.zip
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

[root@Client1 /root/test/dir1]# rm -rf file1 file2 file3
[
[root@Client1 /root/test/dir1]# unzip file.zip
Archive:  file.zip
  inflating: file1                   
  inflating: file2                   
  inflating: file3      
             
[root@Client1 /root/test/dir1]# ls -l
합계 2260
-rw-r--r--. 1 root root 382024 2020-12-24 21:37 file.zip
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3

[root@Client1 /root/test/dir1]# cd ..
[root@Client1 /root/test]# cd ..
[root@Client1 /root]# rm -rf test


Ex) 아카이빙&압축 예제

 - /root/test 디렉토리에 /etc 디렉토리에 있는 파일 중에 conf로 끝나는 파일을 아카이빙+gzip 압축을 실시하여라. 
 - 이때, 압축 파일명은 'conf.tar.gz'로 진행한다.

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


참조

1. 디렉토리나 파일을 만들때 빈칸을 넣지말자 -> \넣어야 한다.

2. 명령어 옵션을 사용할 때 인자값을 필요로하는 옵션은 맨 뒤에 쓰자

 

'리눅스' 카테고리의 다른 글

권한  (0) 2022.04.07
vi, vim 편집기  (0) 2022.04.03
리눅스 계정  (0) 2022.04.03
메타캐릭터 + 리다이렉션  (0) 2022.04.03
기본 명령어 2  (0) 2022.03.23