IT/Linux

[Linux] Linux 압축 & Archive

o_zeew 2022. 2. 22. 10:01

<Archive & 압축>

1. Archive

       : Backup이나 압축을 위해서 여러개의 파일이나 디렉토리를 하나의 파일로 만드는 작업
   - 예전 Tape Drive 시절 여러 곳에 혼재하는 파일이나 디렉토리를 한 파일로 관리하기 위해 만들어졌습니다
   

<명령어>

[tar] (Tape Archive)
    * 옵션
-c : Archive 파일 생성 (필수옵션)
-x : Archive 파일 해제 (필수옵션)
-v : 작업 진행 과정 확인 (View, 공통 옵션) (필수옵션 x)
-f : 파일이름 지정 (필수옵션)
-t : 해제하지 않고 아카이브 파일 확인
-r : 기존 아카이브 파일에 파일 추가
-u : 기존 아카이브 파일에 업그레이드 된 파일 추가
-C : 아카이브 다른 경로에 해제
  ex) # tar -cvf 아카이브파일이름 파일명1 파일명2 파일명3 ..... (아카이브 생성)
      # tar -xvf 아카이브파일이름 (아카이브 해제)
      # tar -xvf 아카이브파일이름 -C 경로지정 (다른경로에 해제)

 

 

<옵션 이용해 명령어 사용해보기>

  *tar 명령어는 유닉스에서도 동일하기 때문에 옵션을 쓸 때 - 기호 생략 가능

 

  • /1/2/3/1/2/3 디렉토리를 만들어주고 /1/2/3 으로 이동합니다

  • 압축 할 파일 3개를 만들어줍니다 (a.txt, b.txt, c.txt)

  • tar 명령어와 아카이브 생성 옵션(c), 파일 이름 지정 옵션(f)를 통해 ab.tar 파일을 만들어봅니다

  - v 옵션을 쓰면 만들어진 결과물을 볼 수 있습니다

 

  • 압축을 해제하기 전 같은 이름의 파일이 있으면 헷갈릴 수 있으니 먼저 a.txt와 b.txt 파일을 삭제해주고                -x 옵션을 사용해서 ab.tar 파일을 해제해봅니다

해제된 a.txt와 b.txt 확인 가능

  • -C 옵션을 사용하여 아카이브 파일을 다른 경로에 지정해서 해제해봅니다

/1/2/3/1 위치에 ab.tar 해제

  • -t 옵션을 사용하여 아카이브 파일을 해제하지 않고 내용물을 확인해봅니다

  • -r 옵션을 사용하여 기존 아카이브 파일에 새로운 파일을 추가해봅니다

ab.tar 파일에 c.txt 추가

  • cat >> 명령어로 기존의 파일의 내용을 수정한 후 업데이트 된 파일을 기존 아카이브 파일에 추가해봅니다
  • 이 때 업데이트 된 파일이 아카이브 파일에 들어있던 기존 파일을 덮어쓰게 됩니다

  • 확인을 위해 상위 디렉토리에 아카이브 파일을 해제해봅니다
  • 해제할 때에는 두개의 c.txt 파일이 해제된 것 처럼 보이지만 상위 디렉토리의 내용을 확인해보면 가장 최신의        파일만 해제되어있습니다

  • tar --delete --file=ab.tar a.txt 명령어를 이용해 아카이브 파일 안의 파일을 삭제해 봅니다
  • 업데이트된 파일을 지운다면 두버전의 파일 모두가 삭제됩니다

업데이트 전 b.txt 파일과 새로 업데이트 후 넣은 b.txt 파일 모두 삭제됨

 


2. 압축
  - 종류 

[zip] (설치필요)
   # yum install -y aip unzip
   # zip 파일명.zip 파일명1 파일명2 파일명3 ... 

   (해제)
   # unzip 파일명.zip 
  

zip과 unzip 설치

<명령어 사용해보기>

 

  • zip 명령어를 통해 a.txt, b.txt, c.txt를 압축해줍니다

  • 헷갈림을 방지하기 위해 .txt 파일을 모두 삭제해준 뒤 unzip 명령어를 이용해 압축을 해제해봅니다



[gzip]  (내장되어있으니 설치필요 x)
   # gzip 파일명 : gzip ab.tar -> ab.tar.gz
   # gzip -1~9 (숫자가 클 수록 압축률이 높다, 속도는 느림) 파일명

   (해제)
   # gunzip 파일명.gz 
   # gzip -d 파일명.gz 

  <명령어 사용해보기>

 

  • gzip은 파일을 여러개를 집어넣을 수 없기 때문에 tar 명령어로 아카이브 파일로 만든 후 압축을 진행해야합니다

ab.tar 아카이브 파일을 gzip으로 압축

  • gunzip을 통해 gzip 압축 파일을 해제해봅니다

  • -d 옵션을 사용하여 삭제할 수도 있습니다



[bzip2]  (설치필요)
   # yum install -y bzip2
   # bzip2 파일명 : bzip2 ab.tar -> ab.tar.bz2
   # bzip2 -1~9 (숫자가 클 수록 압축률이 높다, 속도는 느림) 파일명
  
   (해제)
   # bunzip2 파일명.bz2
   # bzip2 -d 파일명.bz2

 

bzip2 설치

<명령어 사용해보기>

 

  • bzip2도 파일을 여러개 넣을 수 없기 때문에 아카이브 파일을 압축합니다

  • bunzip2 명령어를 이용하여 압축을 해제해봅니다



[xz]
   # xz 파일명
   # xz -1~9 (숫자가 클 수록 압축률이 높다, 속도는 느림) 파일명

   (해제)
   # unxz 파일명.xz
   # xz -d 파일명.xz

 

<옵션 이용해 명령어 사용해보기>

 

  • xz도 파일을 여러개 넣을 수 없기 때문에 아카이브 파일을 압축합니다

  • unxz 명령어를 사용해 압축을 풀어봅니다

  • -d 옵션을 사용해 삭제할 수도 있습니다

 

 


3. Archive + 압축

 

tar cvf를 공통적으로 사용하고 뒤에 붙는 옵션에 따라 확장자가 다르게 만들어집니다

  • -z : gz 확장자     # tar cvfz abc.tar.gz a.txt b.txt c.txt       
  • -j : bz2 확장자    # tar cvfj abc.tar.bz2 a.txt b.txt c.txt
  • -J : xz 확장자     # tar cvfJ abc.tar.xz a.txt b.txt c.txt

 

-z 옵션을 사용해 gz 확장자로 만들기
-j 옵션을 사용해 bz2 확장자로 만들기&nbsp;

 

※ 옵션과 확장자를 틀리게 해도 파일은 생성됨. 단 압축 및 아카이브 해제 시 STDIN Error 
   * 확장명과 다른 옵션 입력해서 압축 및 아카이브 해제 가능

 

bz2의 확장명인 -j 옵션이 아니라 -z 옵션을 사용해 만들 파일로 인한 오류
파일을 만들 때 사용한 -z 옵션을 사용하면 해제 가능