Linux

Linux 압축과 아카이브

5_jinseok12 2021. 8. 27. 11:15
728x90

아카이브(Archive)란?

- 여러개의 파일을 하나의 파일로 묶는 방법

- 압축은 원래 하나밖에 할 수 없다. 여러개의 파일을 압축하기 위해선 아카이브화 해야한다.

 

 

 Windows 압축하는 방법

여러개의 파일 선택 후 -> 압축 -> 압축파일 생성한다. ex) 반디집
하지만 Windows도 아카이브가 되지만 보이지 않는 것일 뿐이다. (과정생략,자동으로 지원)

 

Linux 압축하는 방법

여러개의 파일을 묶은 후(아카이브화), 아카이브 파일을 압축한다.

원래의 압축은 파일 하나만의 용량을 줄여주는 기능이다. 여러개는 동시에 압축X
 

tar (Type ARchive)

- 아카이브 파일에는 확장자 .tar을 붙여서 사용한다.

- TAPE 저장 장치에 데이터를 기록할 때 사용되는 형식이다.

 

 

 옵션
  -c 아카이브 파일을 생성한다.
  -x  아카이브 파일을 해제한다.
  
  -v  진행 과정 출력(화면에 보여주는것)   보통vf를 붙여서 사용하고 c나 x등을 붙여서 기능을 추가.
  -f  아카이브 파일을 사용한다.
  
  -r  기존 아카이브 파일에 새로운 파일을 추가할 때
  -t  아카이브내에 파일을(목록) 확인

 

우선 Linux에서 파일을 압축하는 방법부터 설명하겠다.

[그림 1] 압축할 파일 생성

"compress_test" 디렉토리 안에 file-1을 생성한 후 file-2와 file-3으로 복사한다.

이때 file-1, file-2 ,file-3 세개의 용량이 284M 이므로 각각의 파일 용량이 95M인것을 알 수 있다.

 

압축의 종류로는 (gzip , gunzip) , (bzip2 , bunzip2) , xz 이 있다.

 

 

우선 #gizp을 살펴보자

 

#gzip[파일명]
   결과 :[파일명].gz      확장자인.gz만 보고 압축인 것을 알아야 한다
   
   -[1~9] 가 나타내는 의미는?
   -1 압축속도가 가장 빠르며 압축율은 가장 낮음. 속도를 우선시 한다.
   -9 압축속도가 가장 느리며 압축율을 가장 높음. 파일의 용량이 크면 클수록 효율이 좋다.
   -6 기본값

 

#gzip 을 통해 file-1 을 압축한다.

[그림 2] file-1 압축

 

time 명령어를 통해 gzip을 실행하였을 때 걸리는 시간을 확인할 수 있다.

#time[명령어] : [명령어]실행에 걸린 시간을 출력해주는 명령어

[그림 3] 압축 시간 확인

 

#time gzip -1 file-2     // 총 소요시간 1.2초 용량은 23MB
  real 0m1.219s         // 실제 소요된 총 시간(user + sys = real)
  user 0m0.141s       // 사용자 영역에서 소요된 시간
  sys 0m1.077s        // 커널 영역에서 소요된 시간

gzip -1 이므로  압축속도는 빠르지만 압축률은 낮다.
  
  
  #time gzip -9 file-3     // 시간: 35초 용량 23MB
  real 0m35.578s
  user 0m34.890s
  sys 0m0.379s

gzip -9 이므로  압축속도는 느르지만 압축률은 높다.

 

 
 압축해제


  #gunzip [파일명].gz
  
   #gunzip file-1.gz
   #gzip -d file-2.gz file3.gz (-d decompress)
   모든 압축 명령어에서는 인자를 여러개 사용할 수 있다.
   메타 문자도 사용이 가능하다.

 

 

ls -lh를 통해 제대로 압축되었는지 확인할 수 있다.

[그림 4] lh 명령을 통해 용량 확인

 

 

 #bzip2
  #bzip2 [파일명]
  결과 : [파일명].bz2
   
   #bzip2 file-*
   file-1.bz2   //

위의 [그림 4]와 비교했을 때 압축률이 gzip보다 bzip2가 더 좋은 것을 확인할 수 있다.

[그림 5] bzip2 압축

 

압축 해제
  #bunzip2[파일명].bz2
  #bzip2 -d[파일명].bz2

[그림 6] bunzip을 통해 압축 해제

압축을 해제할 때 bzip2 -d [파일명].bz2 을 하면 여러개를 한번에 풀 수 있다.

 

 

#xz[파일명]

압축률을 비교하였을 때 gzip < bzip2 < xz 순이다.

용량이 클수록 압축률이 좋은 프로그램을 사용하는게 좋다.

[그림 7] yum -y install xz 을 통해 설치


  xz: Compressed data not written to a terminal unless `--force' is used.
  xz: Try `xz --help' for more information.
  위에 [그림 7]처럼 에러메세지가 나오면 yum 명령을 통해 설치해야 한다.
  #yum -y install xz
  

  
 압축 해제
 #unxz[파일명].xz
  #unxz file-2.xz
  //#xz -d file-2.xz

[그림 8] xz를 이용하여 file-2를 압축

file-2 가 제대로 압축되었는지 확인

[그림 9] ls -lh 명령을 통해 file-2 확인 

 

file-1 을 gzip으로 압축하였을 때 크기는 23M 

file-2 을 bzip2 로 압축하였을 때 크기는 20M 

file-3 을 xz로 압축하였을 때 크기는 3M 이므로 크기가 줄어든 것을 확인할 수 있다.

 

 

 

 

아카이브 생성하기( cvf )

 

#tar cvf[아카이브].tar[파일1][파일2]...[파일N]

#tar cvf fileA.tar file-2 file-3     //file-2 file-3을 fileA로 묶겠다.

[그림 10] 아카이브 생성

 

[그림 11]을 통해 filaA.tar 로 아카이브가 생성된 것을 확인

[그림 11] file-2와 file-3이 fileA.tar로 아카이브

 

 

아카이브 해제하기( xvf )

 

아카이브를 해제할 땐 아래 [그림 12]와 같이 지우고 해제하면 된다.

[그림 12] rm 명령을 통해 file을 제거 후 xvf 명령으로 해제

 

같은 방법으로 fileB.tar 아카이브 생성

[그림 13] file-1 과 file-2를 fileB.tar로 아카이브

 

fileB.tar 아카이브가 생성된 것을 확인할 수 있다.

[그림 14] fileB.tar 재생성

 

[그림 15] fileB.tar 내의 파일 확인

 

 

아카이브 파일 목록 확인(tvf)

[그림 16] tvf 명령을 통해 목록 확인

 

5. 특정 디렉토리에 아카이브 해제(-c)

 

mkdir 명령을 통해 test 디렉토리를 만들어주고 그 경로에 압축을 해제해보자.

[그림 17] test 디렉토리 생성 후 xvf 해제

test 디렉토리 경로에 접근하여 ls 명령을 하면 아카이브가 해제된 것을 확인할 수 있다.

[그림 18] 디렉토리 내의 파일 확인

 

 

해제할 때는 압축유틸리티를 의미하는 옵션(z,j,J)를 사용하지 않아도
xvf 만 사용해도 자동으로 해제된다

[그림 19] 옵션 z/j/J

 

[그림 20]

 

[그림 21]

  

 

1199415

 

반응형

'Linux' 카테고리의 다른 글

Linux) yum개념 및 실습  (1) 2018.02.19
Linux) 부팅 프로세스  (0) 2018.02.19
Linux) RPM  (0) 2018.02.19
Linux 파일 검색(find)  (0) 2018.02.13
Linux 파일시스템 RIAD-1, RAID-5 , 볼륨  (0) 2018.02.09