본문 바로가기

Linux/Linux 명령어

[Linux] 파일 보관 및 전송 - tar

tar

  • 여러 파일을 디렉토리 구조, 파일 속성들을 보존하면서 하나의 큰 파일로 묶는 데 주로 사용됨 (원래는 tape archive 의 약자)
  • 파일 아카이브 및 압축은 백업을 만들고 네트워크 간에 데이터를 전송할 때 유용함
  • tar을 사용하면 많은 파일을 단일 파일(아카이브)에 모을 수 있음
  • tar 명령은 아카이브의 콘텐츠를 나열하거나 파일을 현재 시스템으로 추출할 수도 있음

 

 

tar명령어

옵션 설명
-c, --create 새 아카이브 만들기.
-x, --extract 기존 아카이브에서 추출.
-t, --list 아카이브의 목차를 나열합니다.
-v, --verbose 자세한 정보를 표시합니다. 보관 또는 추출되는 파일을 표시합니다.
-f, --file= 파일 이름입니다. 이 옵션 다음에는 사용 또는 생성할 아카이브의 파일 이름이 와야 합니다.
-p, --preserve-permissions 아카이브를 추출할 때 umask를 제거하지 않고 파일 및 디렉터리에 대한 권한을 보존합니다.
-z, --gzip gzip 압축을 사용합니다(.tar.gz).
-j, --bzip2 bzip2 압축을 사용합니다(.tar.bz2). 일반적으로 bzip2 gzip보다 압축률이 더 높습니다.
-J, --xz xz 압축을 사용합니다(.tar.xz). 일반적으로 xz 압축이 bzip2보다 압축률이 더 높습니다.
 
 
 

 

1. tar 아카이브 생성

  • tar 아카이브를 만들기 전에 새로 만들 아카이브와 이름이 같은 아카이브가 디렉터리에 없는지 확인해야함 -> 경고 없이 기존 아카이브를 덮어씀
tar -cf archive.tar file1 file2

  • tar 명령을 실행하는 사용자가 파일을 읽을 권한이 있어야 파일이 누락되지 않음 (디렉터리 포함)
tar -cf /root/etc.tar /etc #root 권한으로 /etc 아카이브 생성
tar -tf /root/etc.tar #아카이브 콘텐츠 나열

 

2. 아카이브에서 파일 추출

  • 기존 파일을 덮어쓰지 않으려면 일반적으로 tar 아카이브를 빈 디렉터리에 추출해야 함
  • 기본적으로 아카이브에서 파일을 추출하면 아카이브 내용 권한에서 umask를 뺀 권한을 갖게 됨 -> 아카이브 파일의 권한을 보존하려면 아카이브를 추출할 때 p 옵션을 사용
mkdir /root/etcbackup
cd /root/etcbackup
tar -xf /root/etc.tar
tar -xpf /root/myscripts.tar

3. 압축된 아카이브 만들기

  • gzip 압축 : 가장 빠르고 오래된 방법이며, 전체 배포판은 물론 플랫폼 전반에서 가장 널리 사용됨
  • bzip2 압축 : gzip에 비해 아카이브 파일의 용량을 더 작게 만들며, gzip보다는 덜 사용됨
  • xz 압축 :  상대적으로 새로운 압축 방법으로 기존의 다른 방법에 비해 압축률이 가장 높음
tar -czf /root/etcbackup.tar.gz /etc #추출시 -xzf
tar -cjf /root/logbackup.tar.bz2 /var/log #추출시 -xjf
tar -cJf /root/sshconfig.tar.xz /etc/ssh #추출시 -xJf
ls /root