tar 명령

용도

아카이브를 조작합니다.

구문

X/Open 표준:

tar {-c|-r|-t|-u|-x} [-B] [ -d ] [ -E ] [ -F ] [-h ] [ -i ] [ -l ] [ -m ] [ -o ] [ -p ] [ -s ] [ -U ] [ -v ] [ -w]
  • [-Number] [-f Archive] [-b Blocks]
  • [-S [Feet] [Feet @Density] [Blocksb]] [-L InputList] [-X ExcludeList]
  • [-N Blocks] [-R] [-D] [-C Directory] [ -Z ] File | Directory ...

Berkeley 표준:

tar { c | r | t | u | x } [ b B d D E f F h i l L X m N o p R s S U v w Z [ 0-9 ] ]
  • [ Blocks ] [ Archive ] [ InputList ] [ ExcludeFile ]
  • [ [ Feet ] | [ Feet@Density ] | [ Blocksb ] ] Directory | File ...

설명

참고:
  1. ustar 헤더 형식은 무제한(2^64 -1) 파일 크기를 허용합니다.
  2. tar 명령은 드물게 할당되는 파일의 스파스 특성을 유지하지 않습니다. 복원 전에 원래 스파스인 파일에서는 파일 크기에 맞게 파일 시스템에 모든 공간이 할당됩니다.

tar 명령은 아카이브 스토리지 미디어에 파일을 쓰거나 파일을 검색함으로써 아카이브를 조작합니다. tar 명령이 사용하는 명령은 File 매개변수로 표시됩니다. File 매개변수가 디렉토리를 참조하는 경우 해당 디렉토리 및 이 디렉토리 내 모든 파일 및 디렉토리도 반복적으로 참조됩니다.

tar 명령은 -f Archive 플래그를 사용하여 다른 장치를 지정하지 않는 한 디폴트 장치(일반적으로 테이프)에서 아카이브를 검색합니다. USTAR(United States Tape Archiver) 형식에 100자가 넘는 경로 이름을 지정하는 경우에는 경로 이름이 접두어 버퍼, /(슬래시) 및 이름 버퍼로 구성되는 것을 기억하십시오.

tar 명령은 시스템 정의 PATH_MAX 한계까지만 path+filename의 길이를 지원합니다. path+filename 입력의 길이가 PATH_MAX 한계보다 크면 아카이브되지 않습니다.

아카이브에 쓸 때 tar 명령은 임시 파일(/tmp/tar* 파일)을 사용하고 여러 링크가 포함된 파일 테이블을 메모리에 유지합니다. tar 명령이 임시 파일을 작성할 수 없거나 링크 테이블을 보유하기에 충분한 메모리가 없는 경우 오류 메시지를 수신합니다.

tar 명령에 대해 두 개의 플래그 그룹인 필수 플래그와 선택적 플래그가 있습니다. 필수 플래그는 tar 명령의 조치를 제어하고 -c, -r, -t, -u, -x 플래그 등이 있습니다. tar 명령이 작동하게 하려면 하나 이상의 필수 플래그를 선택해야 합니다. 필수 플래그를 선택한 후에는 선택적 플래그를 선택할 수 있지만 tar 명령을 제어하는 데 필요한 것은 없습니다.

참고:
  1. 스토리지 장치가 일반 파일 또는 블록 특수 파일인 경우 -u-r 플래그가 되돌아갑니다. 그러나 원시 자기 테이프 장치는 되돌아가기를 지원하지 않습니다. 따라서 스토리지 장치가 원시 자기 테이프인 경우 -u-r 플래그는 테이프를 되감은 다음 열어 다시 읽습니다.
  2. 레코드는 블록 자기 테이블에서 한 블록 길이지만 일반적으로 원시 자기 테이프의 밀도에 절반도 못미칩니다. 따라서 차단된 원시 테이프는 두 번 읽어야 하지만 테이프 동작의 총량은 블록 자기 테이프에서 한 블록 레코드를 한 번 읽는 경우에 비해 적습니다.
  3. 연속 테이프 장치의 구조는 테이프 끝에 정보를 추가하는 것을 지원하지 않습니다. 따라서 스토리지 장치가 연속 테이프인 경우 -u-r 플래그는 유효한 옵션이 아닙니다. 이러한 플래그를 사용하려고 시도하면 다음 오류 메시지가 발생합니다.
    
    tar: Update and Replace options not valid for a 
    streaming tape drive.
  4. 테이프 오류 시 복구되지 않습니다.
  5. IBM®9348 자기 테이프 장치 모델 12에 대한 tar 명령의 성능은 디폴트 블록 크기를 변경하여 개선할 수 있습니다. 블록 크기를 변경하려면 명령행에 다음을 입력하십시오.
    
    chdev -1 <device_name> -a block_size=32k

테이프 장치 사용에 대한 자세한 정보는 rmt 특수 파일을 참조하십시오.

플래그

tar 명령에 대한 플래그는 두 개의 그룹인 필수 및 선택적 플래그가 있습니다. tar 명령을 제어하려면 하나 이상의 필수 플래그를 제공해야 합니다.

표 1. 필수 플래그
필수 플래그 설명
-c 새로운 아카이브를 작성하고 아카이브의 시작부에 하나 이상의 File 매개변수가 지정하는 파일을 씁니다.
-r 하나 이상의 File 매개변수가 지정하는 파일을 아카이브의 끝에 씁니다. 이 플래그는 모든 테이프 장치에서 유효하지 않습니다. 테이프 장치는 테이프 끝에 정보를 추가하는 것을 지원하지 않기 때문입니다.
-t 아카이브에 표시되는 순서로 파일을 나열합니다. 파일은 두 번 이상 나열할 수 있습니다.
-u 파일이 이미 아카이브에 있지 않거나 파일이 아카이브에 기록된 이후 수정된 경우에만 하나 이상의 File 매개변수가 지정하는 파일을 아카이브의 끝에 추가합니다. -u 플래그는 모든 테이프 장치에 유효하지 않습니다. 테이프 장치는 테이프 끝에 정보를 추가하는 것을 지원하지 않기 때문입니다.
-U 확장 속성의 아카이브 및 발췌를 허용합니다. 확장 속성에는 액세스 제어 리스트(ACL)가 포함됩니다.
-x 하나 이상의 File 매개변수가 지정하는 파일을 아카이브에서 발췌합니다. File 매개변수가 한 개의 디렉토리를 참조하는 경우 tar 명령은 아카이브에서 해당 디렉토리를 반복적으로 발췌합니다. File 매개변수를 지정하지 않으면 tar 명령이 아카이브에서 모든 파일을 발췌합니다. 아카이브에 동일한 파일에 대한 복수의 사본이 포함된 경우 마지막으로 발췌된 사본이 이전에 발췌된 모든 사본을 겹쳐씁니다. 추출되고 있는 파일이 시스템에 아직 존재하지 않으면 파일이 작성됩니다. 적절한 사용 권한이 있는 경우 tar 명령은 테이프에 대한 것과 동일한 소유자 및 그룹 ID를 사용하여 모든 파일 및 디렉토리를 복원합니다. 적절한 사용 권한이 없는 경우 파일 및 디렉토리는 사용자의 소유자 및 그룹 ID를 사용하여 복원됩니다. 마지막 발생 외의 파일 발생을 요청할 수 없습니다.
표 2. 선택적 플래그
선택적 플래그 설명
-B 입력 및 출력 차단을 레코드당 20개의 블록으로 강제 실행합니다. 이 옵션을 함께 사용하면 tar 명령은 차단이 유지되지 않는 통신 채널 전체에서 작동할 수 있습니다.
-b Blocks 레코드당 512바이트 블록의 수를 지정합니다. 디폴트 및 최대값은 20이며 이 값은 테이프 레코드에 적합합니다. 레코드 간 갭의 크기로 인해 큰 차단 계수로 작성된 테이프는 레코드당 한 개의 블록으로 된 테이프에 비해 훨씬 더 많은 데이터를 보유할 수 있습니다.

블록 크기는 테이프를 읽을 때 자동으로 판별됩니다(-x 또는 -t 기능 플래그). 아카이브가 -u-r 기능으로 갱신되면 기존 레코드 크기가 사용됩니다. tar 명령은 -c 플래그를 사용하여 새로운 아카이브를 작성할 때에만 Blocks 매개변수의 지정된 값을 사용하여 아카이브를 기록합니다.

-f 플래그를 사용하여 일반 파일로 출력하기 위해 디스크 블록의 크기와 일치하는 차단 계수를 사용하여 디스크 공간을 저장할 수 있습니다(예를 들어, 2048바이트 디스크 블록의 경우 -b4 플래그).

-C Directory tar 명령이 Directory 변수가 지정하는 디렉토리에 대해 chdir 서브루틴을 수행하게 합니다. -C 플래그를 사용하면 가까운 공통 상위로 관련되지 않은 복수의 디렉토리를 축약형 상대 경로 이름을 사용하여 아카이브되도록 할 수 있습니다. 예를 들어, /usr/include/etc 디렉토리의 파일을 아카이브하기 위해 다음 명령을 사용할 수 있습니다.
tar c -C /usr/include File1 File2 -C /etc File3 File4

아카이브에서 파일을 발췌할 때 복수의 -C 옵션을 사용할 수 있습니다. 복수의 -C 옵션을 사용하는 경우 -C Directory의 각 인스턴스는 명령에서 그 앞에 나열되는 것에 상대적입니다. 예를 들어, 두 번째 -C Directory는 첫 번째 -C Directory에 상대적입니다.

아카이브에 절대 경로 이름(예: /home/dir1/filename)을 가지는 파일이 포함되는 경우 이 파일은 파일 경로 또는 파일 이름에서 선행 슬래시(/)를 제거하여 -C Directory가 지정하는 디렉토리로 발췌됩니다.

-C Directory 플래그는 다른 모든 플래그 뒤에 표시되어야 하고 지정된 파일 이름의 리스트에 표시될 수 있습니다.

-D 디렉토리가 지정될 때 순환적 처리를 억제합니다.
-d 블록 파일, 특수 문자 파일 및 선입선출(FIFO) 파이프 처리된 프로세스에 대해 개별 항목을 작성합니다. 일반적으로 tar 명령은 이러한 특수 파일을 아카이브하지 않습니다. -d 플래그를 사용하여 아카이브에 기록할 때 tar 명령을 -x 플래그와 함께 사용하면 비어 있는 디렉토리, 특수 파일 및 선입선출(FIFO) 파이프 처리된 프로세스를 복원할 수 있습니다.
제한사항: 누구나 특수 파일을 아카이브할 수 있지만 루트 사용자 권한이 있는 사용자만 아카이브에서 해당 파일을 발췌할 수 있습니다(FIFO도 비루트 사용자가 발췌할 수 있음).
-E 새로운 아카이브 또는 기존 아카이브에 파일을 추가하는 중에 긴 사용자 및 그룹 이름의 절단을 방지합니다.
-F 아카이브하기 전에 파일 유형을 검사합니다. 소스 코드 제어 시스템(SCCS), 개정 제어 시스템(RCS), core, errs, a.out이라는 이름의 파일 및 .o(점 o)로 끝나는 파일은 아카이브되지 않습니다.
-f Archive Archive 변수를 읽거나 쓸 아카이브로 사용합니다. 이 플래그가 지정되지 않으면 tar 명령은 양식이 /dev/rmt0인 시스템 종속 디폴트 파일 이름을 사용합니다. 지정된 Archive 변수가 -(빼기 부호)인 경우 tar 명령은 표준 출력에 기록하거나 표준 출력에서 읽습니다. 표준 출력에 기록하는 경우 -c 플래그를 사용해야 합니다.
-h 기호 링크가 일반 파일 또는 디렉토리인 것처럼 기호 링크를 따르도록 tar 명령을 강제 실행합니다. 일반적으로 tar 명령은 기호 링크를 따르지 않습니다.
-i 헤더 체크섬 오류를 무시합니다. tar 명령은 아카이브의 각 파일에 대한 체크섬을 포함하는 파일 헤더를 작성합니다. 이 플래그가 지정되지 않으면 시스템이 체크섬을 다시 계산하여 헤더 블록의 내용을 검증하고 불일치가 발생하면 디렉토리 체크섬 오류로 정지합니다. 이 플래그를 지정하면 tar 명령이 오류를 로그한 다음 유효한 헤더 블록을 찾을 때까지 정방향 스캔합니다. 이 플래그를 통해 이전 볼륨을 읽지 않고도 다중 볼륨 아카이브의 이후 볼륨에서 파일을 복원할 수 있습니다.
-L InputList -L 옵션에 대한 Inputlist 인수는 항상 아카이브되거나 발췌되어야 하는 파일 및 디렉토리를 나열하는 파일의 이름이어야 합니다.
-l 해당 링크도 아카이브되지 않은 링크 개수가 1보다 큰 각 파일의 표준 출력에 오류 메시지를 기록합니다. 예를 들어, file1file2가 하드 링크되고 file1만 아카이브에 배치되면 -l 플래그가 오류 메시지를 발행합니다. -l 플래그가 지정되지 않으면 오류 메시지가 표시되지 않습니다.
-m 발췌 시간을 수정 시간으로 사용합니다. 디폴트는 파일의 수정 시간을 보존하는 것입니다.
-N Blocks tar 명령이 연속 테이프 아카이브를 처리할 때 매우 큰 블록 클러스터를 사용할 수 있게 합니다. 그러나 입력 시 tar 명령은 이 플래그를 사용하여 작성된 매우 긴 블록 크기가 포함된 테이프의 블록 크기를 자동으로 판별할 수 없음을 참고하십시오. -N Blocks 플래그가 없는 경우 tar 명령이 자동으로 판별할 수 있는 가장 큰 블록 크기는 20개의 블록입니다.
-o tar 명령의 이전 버전과의 호환성(비AIX®)을 제공합니다. 읽기에 이 플래그가 사용되면 발췌된 파일이 아카이브에 대한 사용자 및 그룹 ID가 아니라 프로그램을 실행하고 있는 사용자의 사용자 및 그룹 ID(UID 및 GID)를 사용하게 됩니다. 이것은 일반 사용자의 디폴트 작동입니다.
-p 현재 파일 모드 생성 마스크(umask)를 무시하고 원래 모드로 필드를 복원합니다. setuid, setgid, 낮은(tacky) 비트 사용 권한도 루트 사용자 권한이 있는 사용자로 복원됩니다. 이 플래그는 파일 및 디렉토리를 해당 원래 모드로 복원합니다.
-R 디렉토리를 지정할 때 반복을 사용합니다. -D 옵션과 함께 사용될 때 무시됩니다.
-s tar 명령이 두 개의 파일을 링크(일반 링크)하려는 시도가 성공하지 못하는 경우에 -s 플래그를 사용하여 기호 링크를 작성하려고 시도합니다.
-S Blocks b, -S Feet, -S Feet@Density 테이블 차단 계수에 관계없이 볼륨당 512KB 블록의 수를 지정합니다(첫 번째 형식). 두 번째 양식을 사용하여 테이프의 크기를 피트 단위로 지정할 수도 있습니다. 이 경우 tar 명령은 디폴트 Density 변수를 가정합니다. 세 번째 양식을 사용하면 테이프 길이 및 밀도 둘 다 지정할 수 있습니다. 피트는 보수적으로 가정할 때 11인치 길이입니다. 이 플래그를 통해 다중 볼륨 테이프 아카이브를 쉽게 다룰 수 있으며 이 아카이브에서는 tar 명령이 다수의 블록을 각 볼륨에 맞추는 방법을 판별할 수 있어야 합니다.
참고:
  1. 테이프 드라이브는 밀도 용량에 따라 다릅니다. Density 변수는 시스템이 한 테이프에 맞출 수 있는 데이터의 양을 계산합니다.
  2. 1/4인치 테이프 장치를 사용하는 경우 Feet 변수의 값을 지정할 때 테이프 장치의 트랙 수를 고려해야 합니다. 예를 들어, 다음과 같이 -S Feet@Density 플래그를 사용하여 테이프가 600피트이고 밀도가 8000bpi인 4 트랙, 1/4인치 테이프 드라이브를 지정할 수 있습니다.
    -S 2400@8000
    여기서, 600피트에 4 트랙을 곱하면 2400피트가 됩니다.
-U 이름 붙여진 확장 속성 및 ACL을 아카이브하거나 복원합니다. 나열할 때 이 옵션은 이름 붙여진 확장 속성의 이름 및 아카이브 이미지의 일부인 각 파일과 연관된 ACL의 유형을 표시합니다.
-v 파일을 처리할 때마다 파일 이름을 나열합니다. -t 플래그와 함께 -v는 파일 크기, 최종 수정 시간, 사용자 번호(UID), 그룹 번호(GID) 및 사용 권한 등의 테이프 항목에 대한 추가 정보를 제공합니다.
-w 수행할 조치 및 그 뒤에 파일 이름을 표시하고 사용자 확인을 기다립니다. 응답이 긍정적이면 조치가 수행됩니다. 응답이 부정적이면 파일이 무시됩니다.
-Number 디폴트 대신 /dev/rmtNumber 파일을 사용합니다. 예를 들어, -2 플래그는 -f/dev/rmt2 파일과 같습니다.
-X ExcludeList ExcludeList에 제공된 파일 이름 또는 디렉토리를 작성, 발췌 또는 나열 중인 tar 아카이브에서 제외합니다. ExcludeList는 행당 한 개의 파일 이름 또는 디렉토리만 포함합니다. 이는 작성, 발췌 또는 나열 중인 tar 아카이브에서 제외되어야 합니다. -X 옵션은 여러 번 지정될 수 있고 다른 모든 옵션에 우선합니다.
-Z 암호화된 파일 또는 디렉토리의 EFS(Encrypted File System) 정보를 아카이브합니다. 디폴트로 EFS 정보가 발췌됩니다. -Z 플래그와 함께 -t-v 플래그를 지정하는 경우 e 표시기는 -Z 플래그를 사용하여 아카이브된 암호화된 파일 및 디렉토리의 파일 모드 뒤에 표시되고 하이픈(-)은 다른 파일의 파일 모드 뒤에 표시됩니다.
제한사항: -Z 플래그를 사용하여 작성된 아카이브는 AIX 6.1 이상 릴리스에서만 복원될 수 있습니다.

종료 상태

이 명령은 다음 종료값을 리턴합니다.

항목 설명
0 성공적으로 완료되었습니다.
>0 오류가 발생했습니다.

보안

RBAC 사용자 및 신뢰있는 AIX 사용자 주의사항: 이 명령은 특권 조작을 수행할 수 있습니다. 특권이 있는 사용자만 특권 조작을 실행할 수 있습니다. 권한 부여 및 특권에 대한 자세한 정보는 보안에 있는 특권 명령 데이터베이스를 참조하십시오. 이 명령과 연관된 특권 및 권한 부여 리스트는 lssecattr 명령 또는 getcmdattr 부속 명령을 참조하십시오.

예제

  1. 디폴트 테이프 드라이브의 새로운 아카이브에 file1 file2 파일을 쓰려면 다음을 입력하십시오.
    tar -c file1 file2
  2. /dev/rmt2 테이프 장치의 아카이브 파일에서 /tmp 디렉토리의 모든 파일을 발췌하고 발췌 시간을 수정 시간으로 사용하려면 다음을 입력하십시오.
    tar -xm -f/dev/rmt2 /tmp
  3. file1 파일을 포함하는 새로운 아카이브 파일을 작성하고 이 아카이브 파일을 /dev/rmt1 장치에 기록될 dd 명령에 패스하려면 다음을 입력하십시오.
    tar -cvf - file1 | dd of=/dev/rmt1 conv=sync
  4. 현재 디렉토리의 out.tar 디스크 아카이브 파일에 있는 파일의 이름을 표시하려면 다음을 입력하십시오.
    
    tar -vtf out.tar
  5. 압축된 tar 아카이브 파일 fil.tar.z을 확장하고 이 파일을 tar 명령에 패스한 다음 확장된 tar 아카이브 파일에서 모든 파일을 발췌하려면 다음을 입력하십시오.
    
    zcat fil.tar.Z | tar -xvf -
  6. 축약형 상대 경로 이름을 사용하여 /usr/include/usr/bin 파일의 내용을 아카이브하려면 다음을 입력하십시오.
    cd /usr
    tar -cvf/dev/rmt0 -C./include . -C ../bin .
    요구사항: 상대 경로 이름을 사용하여 -C 플래그의 다중 인스턴스를 지정하는 경우 사용자는 이전 -C 플래그 요청을 고려해야 합니다.
  7. -S 플래그를 사용할 때 8mm 장치에 아카이브하려면 다음을 입력하십시오.
    tar -cvf /dev/rmt0 -S 4800000b /usr
    제한사항: 8mm 장치에 아카이브하는 경우 8mm 장치는 테이프에 기록할 때 밀도의 개념을 사용하지 않으므로 -S Feet-S Feet@Density 플래그는 사용하지 마십시오.
  8. -L 옵션의 InputList 인수를 통해 파일에 나열되는 모든 C 파일의 리스트를 아카이브하려면 다음을 입력하십시오.
    tar -cvf fl.tar -L fl_list
    여기서, fl_list는 모든 .c 파일의 리스트를 구성하는 파일입니다. 이 파일은 다음과 같이 확보할 수 있습니다.
    ls *.c > fl_list
  9. -L 옵션을 사용하여 변수를 설정함으로써 모든 C 파일의 리스트를 아카이브하려면 다음을 입력하십시오.
    ls *.c > fl_list
    fl=fl_list
    tar -cvf var.tar -L $fl
  10. 아카이브 작성 중 긴 사용자 이름 또는 그룹 이름이 절단되지 않도록 하려면 다음을 입력하십시오.
    tar -cvEf file.tar file
  11. ACL 및 EA와 함께 file1 파일을 포함하는 새로운 아카이브 파일을 작성하려면 다음을 입력하십시오.
    tar -cvUf /tmp/tar.ar file1 

Berkeley 옵션

다음은 tar 명령을 사용하는 Berkeley 옵션의 예제입니다.

팁: Berkeley 옵션을 사용할 경우 플래그에 대한 인수는 아래 플래그가 제공되는 순서와 정확히 같은 순서로 제공되어야 합니다. 예:
tar cvfbL test.tar 20 infile
여기서, test.tar은 아카이브 tar 파일이고 20은 블록의 수이며 infile은 아카이브에 대한 Inputlist입니다.
  1. 입력 리스트 파일 infile에 나열된 모든 디렉토리 및 전체 파일 이름을 ar.tar에 아카이브하려면 다음을 입력하십시오.
    tar cvfL ar.tar infile
    여기서, infile은 아카이브될 파일의 경로 이름을 포함합니다.
  2. 입력 리스트 파일 infile에 나열된 디렉토리 내 파일을 ar.tar에 아카이브하려면 다음을 입력하십시오.
    tar cvRfL ar.tar infile
  3. 입력 리스트 파일 infile에 지정된 전체 파일과 디렉토리를 ar.tar이라는 이름의 아카이브에서 발췌하려면 다음을 입력하십시오.
    tar xvfL ar.tar infile
  4. 디렉토리 내 파일과 입력 리스트 파일 infile에 지정된 전체 파일을 ar.tar이라는 이름의 아카이브에서 발췌하려면 다음을 입력하십시오.
    tar xvRfL ar.tar infile

파일

항목 설명
/dev/rmt0 디폴트 테이프 장치를 지정합니다.
/bin/tar tar 명령에 대한 기호 링크를 지정합니다.
/usr/bin/tar tar 명령을 포함합니다.
/tmp/tar* 임시 파일을 지정합니다.
팁: AIX 3.2에서 전체 /bin 디렉토리는 /usr/bin에 대한 기호 링크입니다.