본문 바로가기
Computer Science/RHCSA® REDHAT9

[RHCSA #5] Chapter3: tar 정복하기 (Redhat 9)

by rnasterofmysea 2024. 11. 23.
반응형

tar 명령어란?

tar은 파일 및 디렉토리를 하나의 아카이브 파일로 묶거나 풀 때 사용하는 리눅스 명령어입니다.
"tape archive"의 약자로, 데이터를 백업하거나 전송할 때 유용합니다. 아카이브 파일의 확장자는 보통 .tar입니다.
압축 자체는 지원하지 않지만, gzip, bzip2 등의 압축 도구와 결합하여 사용됩니다.

 

  • tar 명령어는 여러 파일을 하나로 묶거나(아카이브), 해제하는 데 사용.
  • **압축 옵션(-z, -j, -J)**과 결합하여 데이터를 효율적으로 관리.
  • -c, -x, -t 등의 옵션을 조합해 다양한 파일 관리 작업 수행 가능.

1. tar 명령어 기본 구문

tar [옵션] [아카이브 파일 이름] [대상 파일/디렉토리]
  • 옵션:
    • -c: 아카이브 생성 (Create).
    • -x: 아카이브 추출 (Extract).
    • -t: 아카이브 내용 확인 (List).
    • -v: 진행 상태를 상세히 출력 (Verbose).
    • -f: 아카이브 파일 이름 지정 (File).
    • -z: gzip으로 압축하거나 압축 해제 (gzip).
    • -j: bzip2로 압축하거나 압축 해제 (bzip2).
    • -J: xz로 압축하거나 압축 해제 (xz).
    • -r: 기존 아카이브에 파일 추가 (Append).

2. 주요 사용 사례

2-1. 아카이브 생성

  1. 디렉토리를 하나의 아카이브로 묶기:
    • archive.tar: 생성될 아카이브 파일 이름.
    • mydir/: 묶으려는 디렉토리.
  2. tar -cvf archive.tar mydir/
  3. gzip으로 압축하여 생성:
    • -z: gzip 압축 추가.
  4. tar -czvf archive.tar.gz mydir/
  5. bzip2로 압축하여 생성:
    • -j: bzip2 압축 추가.
  6. tar -cjvf archive.tar.bz2 mydir/

2-2. 아카이브 추출

  1. 아카이브 파일 풀기:
  2. tar -xvf archive.tar
  3. gzip으로 압축된 파일 추출:
  4. tar -xzvf archive.tar.gz
  5. bzip2로 압축된 파일 추출:
  6. tar -xjvf archive.tar.bz2
  7. 특정 파일만 추출:
  8. tar -xvf archive.tar mydir/file1.txt

2-3. 아카이브 내용 확인

  1. 아카이브 파일의 내용 보기:
  2. tar -tvf archive.tar
  3. gzip 아카이브 내용 보기:
  4. tar -tzvf archive.tar.gz

3. 유용한 옵션

옵션 설명

-c 새로운 아카이브 생성.
-x 아카이브 파일 추출.
-t 아카이브 내용 확인.
-v 처리 중인 파일을 상세히 출력.
-f 아카이브 파일 이름 지정.
-z gzip 압축/해제.
-j bzip2 압축/해제.
-J xz 압축/해제.
--exclude 특정 파일 또는 디렉토리를 아카이브에서 제외.
-C 특정 디렉토리로 이동 후 작업 수행.

4. 실전 예제

4-1. 특정 파일 제외하고 아카이브 생성

tar --exclude='*.log' -cvf archive.tar mydir/
  • .log 파일을 제외하고 mydir의 내용을 아카이브.

4-2. 디렉토리 변경 후 아카이브 추출

tar -xvf archive.tar -C /tmp
  • /tmp 디렉토리로 이동 후 추출.

4-3. 파일 추가

tar -rvf archive.tar newfile.txt
  • archive.tar에 newfile.txt 추가.

4-4. 손상된 아카이브 복구

tar --ignore-failed-read -xvf archive.tar
  • 읽기 오류를 무시하고 가능한 파일만 추출.

5. 자주 사용하는 조합

  1. gzip + tar
    • 생성:
      tar -czvf archive.tar.gz mydir/
      
    • 추출:
      tar -xzvf archive.tar.gz
      
  2. bzip2 + tar
    • 생성:
      tar -cjvf archive.tar.bz2 mydir/
      
    • 추출:
      tar -xjvf archive.tar.bz2
      
  3. xz + tar
    • 생성:
      tar -cJvf archive.tar.xz mydir/
      
    • 추출:
      tar -xJvf archive.tar.xz
      

6. 출력 예제

아카이브 생성

tar -cvf archive.tar file1 file2
file1
file2

아카이브 내용 확인

tar -tvf archive.tar
-rw-r--r-- user group 1024 2024-11-22  file1
-rw-r--r-- user group 2048 2024-11-22  file2

아카이브 추출

tar -xvf archive.tar
file1
file2

7. bzip2와 gzip 아카이브의 차이점

 

bzip2와 gzip은 리눅스에서 파일을 압축할 때 사용하는 두 가지 주요 압축 도구입니다. tar 명령어와 함께 사용하면 .tar.bz2 또는 .tar.gz 아카이브를 생성할 수 있습니다. 하지만 두 도구는 압축 방식과 성능 측면에서 차이점이 있습니다.

 

주요 차이점 비교

 

  gzip bzip2
압축 방식 DEFLATE 알고리즘 Burrows-Wheeler 변환(BWT) 및 Huffman 코딩
압축률 낮음 (파일 크기 큼) 높음 (더 작은 파일 크기)
압축 속도 빠름 느림
압축 해제 속도 매우 빠름 상대적으로 느림
CPU 사용량 적음 많음
파일 확장자 .gz .bz2
사용 명령어 gzip, gunzip bzip2, bunzip2
다중 스레드 지원 기본적으로 미지원 기본적으로 미지원 (병렬 처리 도구 사용 가능)

선택 기준

  • gzip:
    • 빠른 압축/해제가 필요한 경우.
    • 압축률이 상대적으로 중요하지 않은 상황에서 적합.
    • CPU 자원을 적게 사용해야 하는 환경.
  • bzip2:
    • 최대한 작은 파일 크기가 필요한 경우.
    • 압축 시간이 오래 걸려도 괜찮은 경우.
    • 저장 공간이 제한적인 환경에서 적합.

 

압축 속도 및 크기 비교

압축할 파일: sample_file (100MB 텍스트 파일 기준)

도구압축 명령어압축 후 크기압축 시간

gzip gzip sample_file 25MB 2초
bzip2 bzip2 sample_file 20MB 10초

압축 해제 속도 비교

압축 해제 명령어:

  • gzip: gunzip sample_file.gz
  • bzip2: bunzip2 sample_file.bz2

도구해제 시간

gzip 1초
bzip2 3초
반응형