| HOME / 정보공유 / AIX 명령어 모음

tar
tar tar 명령 목적 아카이브를 조작합니다. 구문
tar { -c | -r | -t | -u | -x } [ -b Blocks ] [ -B ] [ -d ] [ -F ] [ -h ] [ -i ] [ -L InputList ] [ -l ] [ -m ] [ -N Blocks ][ -o ] [ -p ] [ -s ] [ -v ] [ -w ] [ -Number ] [ -f Archive ] [ -S Blocksb | -S Feet | -S Feet@Density ] [ File | Directory | -C Directory ] ...
설명
주의: tar 명령에 있는 헤더 블록 공간에 대한 제한 때문에 65,535를 초과하는 사용자 번호(UID)와 그룹 식별 번호(GID)는 특정 시스템으로 복원할 때 번호가 손상됩니다. 크기 제한조건은 데이터 손상과 관련이 없는 소유권과 사용권한에만 영향을 미칩니다. 다음 시스템에서 소유권 손상이 발생합니다.
소유권 검사에 uname 및 gname 필드를 사용하지 않는 시스템.
아카이브 시스템과 동일한 사용자 및 그룹 ID를 갖지 않는 시스템.
주:
tar 명령은 XPG/4 표준과 POSIX.2 표준에 따른 제한 때문에 크기가 2 GB를 넘는 파일에는 사용할 수 없습니다.
tar는 드문드문하게 할당되는 모든 파일의 특성을 보존하지 않습니다. 복원 전에 원래 드문드문했던 각 파일은 모두 파일시스템 내에서 파일 크기만큼 할당된 영역을 차지하게 됩니다.
tar 명령은 파일을 아카이브 기억장치에 기록하거나 아카이브 기억장치로부터 파일을 가져옴으로써 아카이브를 조작합니다. tar 명령이 사용하는 파일은 File 매개변수로 표시됩니다. File 매개변수가 디렉토리를 참조하는 경우, 해당 디렉토리와 그 안에 있는 모든 파일 및 디렉토리도 참조됩니다.
tar 명령은 다른 장치를 -f Archive 플래그로 지정하지 않은 경우 디폴트 장치(보통 테이프)에서 아카이브를 찾습니다. 미국 테이프 보존기(USTAR) 형식에 맞게 100자가 넘는 경로 이름을 지정할 때는 경로 이름이 접두어 버퍼와 /(슬래시), 이름 버퍼로 이루어짐을 명심하십시오.
접두어 버퍼는 최대 155 바이트, 이름 버퍼는 최대 100 바이트를 사용할 수 있습니다. 경로 이름을 슬래시를 이용해 두 부분으로 나눌 수 없으면, 아카이브로 만들 수 없습니다. 이러한 제한은 tar 아카이브 헤더(header)의 구조 때문으로 표준 및 역방향 호환성을 위해 유지해야 합니다. 또한, 하드 또는 심볼 링크('링크 이름')의 대상 길이도 100 바이트를 초과할 수 없습니다.
아카이브를 기록할 때 tar 명령은 임시 파일(/tmp/tar* 파일)을 사용하고 여러 링크를 갖는 파일표를 메모리에서 유지관리합니다. tar 명령이 임시 파일을 작성할 수 없거나 링크표를 보유하기에 메모리가 부족할 경우에는 오류 메세지가 표시됩니다.
tar 명령에는 두 그룹의 플래그, 즉 필수 플래그와 선택적 플래그가 존재합니다. 필수 플래그는 tar 명령의 조치를 제어하는 데, -c, -r, -t, -u 및 -x 플래그가 필수 플래그에 해당됩니다. 최소한 하나의 필수 플래그를 선택해야 합니다. 필수 플래그를 선택하고 선택적 플래그를 선택할 수 있으나 tar 명령을 제어하는 데 선택적 플래그가 반드시 필요한 것은 아닙니다.
주:
기억장치가 일반 파일 또는 블록 특수 파일일 경우, -u와 -r 플래그는 테이프를 후진합니다. 그러나 원시 자기 테이프는 테이프의 맨 뒷부분에 저오를 추가하는 기능을 지원하지 않습니다. 따라서 기억장치가 원시 자기 테이프인 경우, -u and -r 플래그는 테이프를 되감고 연 다음 다시 읽습니다.
레코드는 블록 자기 테이프에서는 블록 하나에 해당하는 길이지만, 일반적으로 원시 자기 테이프에서는 조밀하게 씌여지므로 길이가 절반 이하입니다. 따라서 블록화된 원시 테이프를 두 번 읽더라도 테이프의 총 작동 시간은 블록 자기 테이프에서 한 블록 레코드를 한 번 읽는 것보다 짧습니다.
스트림 테이프 장치 구조에서는 테이프 끝에 정보를 추가할 수 없습니다. 기억장치가 스트림 테이프인 경우, -u 및 -r 플래그는 유효한 옵션이 아닙니다. 이러한 테이프를 사용하려고 하면 다음과 같은 오류 메세지가 표시됩니다.
tar: 스트림 테이프 드라이브에 대한
갱신 및 대체 옵션이 유효하지 않습니다.
테이프 오류시 복구되지 않습니다.
디폴트 블록 크기를 변경하여 IBM 9348 자기 테이프 장치 모델 12에 대한 tar 명령의 성능을 향상시킬 수 있습니다. 블록 크기를 변경하려면 다음과 같이 입력하십시오.
chdev -1 -a block_size=32k
테이프 장치의 사용에 대한 자세한 정보는 rmt 특수 파일을 참조하십시오.
플래그
tar 명령 플래그는 두 그룹 즉, 필수 플래그와 선택적 플래그로 나뉘어집니다. tar 명령을 제어하려면 최소한 하나의 필수 플래그를 제공해야 합니다.
필수 플래그
-c 새 아카이브를 만들어 그 아카이브 사본의 맨 앞에 하나 이상의 File 매개변수로 지정한 파일을 기록합니다.
-r 아카이브 사본의 맨 뒤에 하나 이상의 File 매개변수로 지정한 파일을 기록합니다. 이 플래그는 테이프 장치에는 유효하지 않습니다. 그 이유는 테이프 장치는 테이프 맨 뒤에 정보를 추가하는 기능을 지원하지 않기 때문입니다.
-t 아카이브에 나타나는 순서로 파일들을 나열합니다. 파일이 한번 이상 나열될 수 있습니다.
-u 파일이 아카이브 사본에 아직 없거나 아카이브 사본에 파일을 쓴 후 수정을 한 경우에만 하나 이상의 File 매개변수로 지정한 파일을 아카이브 사본 맨 뒤에 추가합니다. -u 플래그는 테이프 장치에 유효하지 않습니다. 그 이유는 테이프 장치는 테이프 맨 뒤에 정보를 추가하는 기능을 지원하지 않기 때문입니다.
-x 아카이브 사본에서 하나 이상의 File 매개변수로 지정한 파일들을 발췌합니다. File 매개변수가 디렉토리를 참조하는 경우, tar 명령이 순환적으로 아카이브로부터 해당 디렉토리를 발췌합니다. File 매개변수를 지정하지 않을 경우, tar 명령은 아카이브로부터 모든 파일을 발췌합니다. 아카이브에 같은 파일의 사본이 여러 개 있는 경우, 발췌된 최종 사본이 이전에 발췌된 모든 사본을 겹쳐씁니다. 발췌 중인 파일이 시스템에 아직 없는 경우, 해당 파일이 작성됩니다. 적절한 사용권한이 있는 경우, tar 명령은 테이프에 아카이브된 것과 같은 소유자 및 그룹 ID로 모든 파일과 디렉토리를 복원합니다. 적절한 사용권한이 없는 경우, 명령을 수행하는 사용자의 소유자 및 그룹 ID로 파일과 디렉토리가 복원됩니다. 최종 사본이 아닌 파일 사본을 찾을 가능성은 없습니다.
선택적 플래그
-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
-CDirectory 플래그는 다른 모든 플래그 다음에 나타나야 하고 파일 이름 리스트에 표시될 수 있습니다.
-d 블록 파일, 특수 파일 및 FIFO(선입선출법) 파이프 처리를 위한 별도의 항목들을 만듭니다. 일반적으로 tar 명령은 이러한 특수 파일을 아카이브하지 않습니다. -d 플래그를 지정하여 아카이브 매체에 기록을 할 경우, tar 명령은 -x 플래그로 빈 디렉토리, 특수 파일 및 FIFO(선입선출법) 파이프 프로세스를 복원할 수 있습니다.
주: 모든 사람이 특수 파일을 아카이브할 수는 있지만 루트 사용자 권한이 있는 사용자만이 아카이브 매체에서 파일들을 발췌할 수 있습니다.
-F 아카이브하기 전에 파일을 검사합니다. 소스 코드 제어 시스템(SCCS), 개정 제어 시스템(RCS), core나 errs 또는 a.out 파일, 그리고 .o(점 o)로 끝나는 파일은 보존되지 않습니다.
-f Archive Archive 변수를 읽거나 쓸 아카이브 매체로서 사용합니다. 이 플래그를 지정하지 않을 경우, tar 명령은 /dev/rmt0 양식의 시스템 종속 디폴트 파일 이름을 사용합니다. 지정된 Archive 변수가 -(빼기 부호)인 경우, tar 명령은 표준 출력에 기록하거나 표준 입력으로부터 읽습니다. 표준 출력에 쓰는 경우, -c 플래그가 사용되어야 합니다.
-h tar 명령이 심볼 링크가 정상 파일 또는 디렉토리인 것처럼 심볼 링크를 따르도록 강요합니다. 일반적으로 tar 명령은 심볼 링크를 따르지 않습니다.
-i 헤더(header) 체크섬 오류를 무시합니다. tar 명령은 아카이브에 각 파일에 대한 체크섬을 포함하는 파일 헤더(header)를 기록합니다. 이 플래그가 지정되지 않으면, 시스템이 체크썸을 다시 계산하여 헤더(header) 블록의 내용을 검증하고 불일치가 발견되면 등록 체크썸 오류로 정지됩니다. 이 플래그가 지정되면, tar 명령이 오류를 기록한 다음 유효한 헤더(header) 블록을 찾을 때까지 스캔합니다. 그러면 이전 볼륨을 읽지 않고 복수 볼륨 아카이브의 후자 볼륨에서 파일을 복원할 수 있습니다.
-LInputList -L 옵션에 대한 Inputlist 인수는 항상 아카이브해야 하는 파일 및 디렉토리를 나열하는 파일의 이름이어야 합니다.
또한, InputList 인수는 아카이브될 파일 및 디렉토리를 나열하는 파일의 이름을 보유하는 변수가 될 수 있습니다.
이 옵션은 InputList 인수에 나열한 파일과 디렉토리를 아카이브에 기록할 수 있게 합니다. InputList 인수의 디렉토리들은 반복적으로 처리되지 않습니다. InputList 인수에 디렉토리가 있는 경우, tar 명령은 그 디렉토리에 종속된 파일과 서브디렉토리가 아닌 바로 그 디렉토리만 기록합니다.
추가 파일과 디렉토리가 명령행의 InputList 인수에 있는 경우, 이러한 파일 및 디렉토리 다음에 InputList 인수의 내용이 아카이브됩니다. 이러한 추가 파일 또는 디렉토리는 순환적으로 처리되는 디폴트 동작으로 아카이브됩니다.
-l 링크 계수가 1보다 크고 아직 아카이브되지 않은 링크가 있는 각 파일에 대한 오류 메세지를 표준 출력에 기록합니다. 예를 들면, file1과 file2가 서로 하드 링크되어 있는 데 그 중 file1만을 아카이브에 넣으면 -l 플래그가 오류 메세지를 표시합니다. -l 플래그가 지정되지 않으면 오류 메세지가 표시되지 않습니다.
-m 발췌 시간을 수정 시간으로 사용합니다. 디폴트는 파일의 수정 시간을 보존하는 것입니다.
-N Blocks tar 명령이 스트림 테이프 아카이브 처리시 매우 큰 블록 클러스터를 사용할 수 있게 해줍니다. 그러나 입력시 이 플래그에 의해 만들어진 테이프의 블록 크기를 tar 명령이 자동으로 결정할 수 없습니다. -N Blocks 플래그가 없을 경우, tar 명령이 자동으로 결정할 수 있는 최대 블록 크기는 20 블록입니다.
-o tar 명령의 이전 버전과의 역 호환성을 제공합니다(AIX 이외). 읽기 조작에 이 플래그를 사용할 경우, 발췌된 파일의 사용자 ID 및 그룹 ID를, 아카이브에 있는 것이 아니라 프로그램을 수행 중인 사용자 ID 및 그룹 ID(UID 및 GID)를 사용합니다. 이것은 일반 사용자를 위한 디폴트 조치입니다.
-p 현재의 파일 모드 생성 마스크를 무시하고 원래 모드로 필드들을 복원합니다. setuid, setgid 및 비트 사용권한도 루트 사용자 권한을 갖는 사용자에게 복원됩니다. 이 플래그는 파일을 원래 모드로 복원하지만 디렉토리는 원래 모드로 복원하지 않습니다.
-s tar 명령이 -s 플래그로 두 파일의 링크(정상 링크)를 시도하다 실패한 경우에 심볼 링크의 작성을 시도합니다.
-SBlocksb, -S Feet, -S Feet@Density 테이프 블록화 인수에 관계없이 볼륨마다 512 KB 블록의 수를 지정합니다(첫번째 형태). tar 명령이 디폴트 Density 변수를 사용한다고 가정하면 두 번째 양식을 사용하여 테이프 크기를 피트 단위로 지정할 수도 있습니다. 세 번째 양식을 사용하여 테이프 길이와 밀도를 둘 다 지정할 수 있습니다. 피트는 연속되는 11인치로 간주됩니다. 이 플래그를 사용하면 복수 볼륨 테이프 아카이브를 보다 쉽게 다룰 수 있는 데, 이러한 볼륨에서는 tar 명령이 각 볼륨에 적합한 블록의 수를 결정할 수 있어야 합니다.
주:
테이프 드라이브는 밀도 용량에 따라 다릅니다. Density 변수가 시스템이 테이프에 맞는 데이터의 양을 계산합니다.
1/4 인치 테이프 장치를 사용할 경우, Feet 변수 값을 지정할 때 테이프 장치의 트랙 수를 고려해야 합니다. 예를 들어, 600 피트 테이프와 8000 bpi의 밀도를 갖는 4 트랙 1/4 인치 테이프 드라이브는 -S Feet@Density 플래그를 다음과 같이 사용하여 지정할 수 있습니다.
-S 2400@8000
이 때, 600 피트에 4 트랙을 곱하여 2400 피트가 됩니다.
-v 파일을 처리할 때마다 파일 이름을 보여줍니다. -t 플래그를 사용할 경우, -v 플래그는 파일 크기, 최종 수정 시간, 사용자 번호(UID), 그룹 번호(GID) 및 사용 권한을 포함한 추가 정보를 제공합니다.
-w 그 뒤에 파일 이름과 함께 취할 조치를 표시한 후 사용자의 확인을 기다립니다. 응답이 긍정적이면 조치를 실행합니다. 응답이 부정적이면 파일이 무시됩니다.
-Number 디폴트 파일 대신 /dev/rmtNumber 파일을 사용합니다. 예를 들면 -2 플래그는 -f/dev/rmt2 파일과 동일합니다.
종료 상태
이 명령은 다음과 같은 종료 값을 리턴합니다.
0 성공적으로 완료하였습니다.
>0 오류가 발생하였습니다.
예제
file1 파일과 file2 파일을 디폴트 테이프 드라이브의 새로운 아카이브에 기록하려면 다음과 같이 입력하십시오.
tar -c file1 file2
/dev/rmt2 테이프 장치 상의 아카이브 파일에서 /tmp 디렉토리의 모든 파일을 발췌하고 수정 시간을 발췌 시간으로 사용하려면 다음과 같이 입력하십시오.
tar -xm -f/dev/rmt2 /tmp
file1 파일을 포함하는 새로운 아카이브 파일을 작성하고 아카이브 파일을 dd 명령에 패스하여 /dev/rmt1 장치에 기록되게 하려면 다음을 입력하십시오.
tar -cvf - file1 | dd of=/dev/rmt1 conv=sync
현재 디렉토리에 있는 out.tar 디스크 아카이브 파일에 있는 파일들의 이름을 표시하려면 다음과 같이 입력하십시오.
tar -vtf out.tar
압축된 tar 아카이브 파일, fil.tar.z를 확장하고 파일을 tar 명령으로 패스한 다음 확장된 tar 아카이브 파일로부터 모든 파일을 발췌하려면 다음을 입력하십시오.
zcat fil.tar.Z | tar -xvf -
상대 경로 이름을 사용하여 /usr/include 및 /usr/bin 파일의 내용을 아카이브하려면 다음과 같이 입력하십시오.
cd /usr
tar -cvf/dev/rmt0 -C./include . -C ../bin .
주: 상대 경로 이름을 사용하여 -C 플래그의 복수 인스턴스를 지정하는 경우, 이전의 -C 플래그 요청을 고려해야 합니다.
-S 플래그를 사용하여 8 밀리미터 장치에 아카이브하려면 다음과 같이 입력하십시오.
tar -cvf /dev/rmt0 -S 4800000b /usr
주: 8 미리미터 장치에 아카이브할 때 -S Feet 및 -S Feet@Density 플래그를 사용하지 않는 것이 좋은데 그 이유는 8 밀리미터 장치에서 테이프에 기록시 밀도 개념을 사용하지 않기 때문입니다.
-L 옵션의 InputList 인수를 통해 파일에 나열되는 모든 C 파일 리스트를 아카이브하려면, 다음과 같이 입력하십시오.
tar -cvf fl.tar -L fl_list
여기서 fl_list는 그 안에 있는 모든 .c 파일들로 구성되는 하나의 파일입니다. 이 파일은 다음과 같이 확보될 수 있습니다.
ls *.c > fl_list
-L 옵션을 사용하여 변수를 설정하여 모든 C 파일의 리스트를 아카이브하려면, 다음과 같이 입력하십시오.
ls *.c > fl_list
fl=fl_list
tar -cvf var.tar -L $fl
파일
/dev/rmt0 디폴트 테이프 장치를 지정합니다.
/bin/tar tar 명령으로 심볼 링크를 지정합니다.
/usr/bin/tar tar 명령을 포함합니다.
/tmp/tar* 임시 파일을 지정합니다.
주: AIX 3.2에서는 전체 /bin 디렉토리가 /usr/bin으로 심볼 링크되어 있습니다.
관련 정보
cat 명령, dd 명령, pax 명령.
rmt 특수 파일.