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

cpio
cpio cpio 명령 목적 아카이브 기억장치와 디렉토리의 내부 및 외부로 파일을 복사합니다. 구문
cpio -o [ a ] [ c ] [ v ] [ B | C Value ] Output
cpio -i [ b ] [ c ] [ d ] [ f ] [ m ] [ M ] [ r ] [ s ] [ t ] [ u ] [ v ] [ S ] [ 6 ] [ B | C Value ] [ Pattern... ]
cpio -p [ a ] [ d ] [ l ] [ m ] [ M ] [ u ] [ v ] Directory
설명
cpio 명령은 cpio 아카이브로 또는 아카이브에서 파일을 복사합니다. cpio 아카이브는 여러 개의 볼륨에 걸쳐 있을 수 있습니다. -i, -o 및 -p 플래그는 수행할 조치를 선택합니다.
주의: 출력을 cpio 명령에서 특수 파일(장치)로 재지정할 경우 블록 장치가 아닌 원시 장치로 재지정해야 합니다. 블록 장치에 쓰는 것은 비동기적으로 수행되기 때문에, 장치의 끝에 도달하는지 여부를 알 방법이 없습니다.
주:
XPG/4 및 POSIX.2 표준에 따른 제한사항 때문에 cpio 명령은 2기가를 넘는 파일은 사용할 수 없습니다.
cpio 명령은 드문드문하게 할당되는 파일의 드문드문한 특성을 보존하지 않습니다. 복원 전에 원래 드문드문했던 파일은 파일시스템 내에서 파일의 크기만큼 할당된 영역을 차지하게 됩니다.
cpio -o 명령
cpio -o 명령은 표준 입력에서 파일 경로 이름을 읽고, 경로 이름 및 상태 정보와 함께 이 파일들을 표준 출력에 복사합니다. 고유하게 링크된 여러 파일로 구성된 cpio 명령 경로 이름을 지정하지 마십시오. 이런 명령 경로 이름에는 파일을 추적할만큼 충분한 메모리가 없으므로 링크 정보가 유실ㅂ됩니다.
cpio -i 명령
cpio -i 명령은 표준 출력에서 cpio -o 명령으로 생성된 아카이브 파일을 읽은 후 Pattern 매개변수에 대응하는 이름의 파일을 복사합니다. 이러한 파일을 현재 디렉토리 트리로 복사합니다. ksh 명령에 기술된 파일 이름 표기를 사용하여 Pattern 매개변수를 하나 이상 나열할 수 있습니다. 이 응용프로그램에서 특수 문자 *(별표), ?(물음표) 및 [...](대괄호와 생략 부호)는 ksh 명령에 기술된 용도 외에 경로 이름의 /(슬래쉬)와 일치합니다. Pattern 매개변수에 대한 디폴트는 *(별표)이며, 입력에 있는 모든 파일을 선택합니다. [a-z]와 같은 표현식에서, 빼기 부호는 현재 배열(collating) 순서에 따라 두 문자 사이의 모든 값을 의미합니다.
배열(collating) 순서는 문자 범위에 사용할 등가 클래스를 정의할 수 있습니다.
cpio -p 명령
cpio -p 명령은 표준 입력에서 파일 경로 이름을 읽고 이 파일을 Directory 매개변수에 지정한 디렉토리로 복사합니다. 지정한 디렉토리는 이미 존재해야 합니다. 이런 경로 이름에 아직 없는 디렉토리 이름이 있을 경우 d 플래그를 사용하여 지정한 디렉토리가 작성되게 해야 합니다.
주: 루트 사용자 권한이 있는 경우에만 특수 파일을 복사할 수 있습니다.
매개변수
Directory 디렉토리를 지정합니다.
>Output 디스켓 또는 파일과 같은 출력 장치를 지정합니다. 테이프 장치 사용에 대해서는 rmt 특수 파일을 참조하십시오.
Pattern 명령과 함께 사용할 패턴(ksh 명령에 기술된 대로)을 지정합니다. Pattern 매개변수의 디폴트는 *(별표)로 Input의 모든 파일을 선택합니다.
플래그
플래그들 사이에 공백을 두지 말고 모든 플래그들을 함께 나열해야 합니다. 다음 플래그 모두를 -o, -i 또는 -p 플래그와 함께 사용할 수 있는 것은 아닙니다.
a 소스 파일의 액세스 횟수를 이전 횟수로 재설정합니다.
b 바이트와 반단어(halfword)를 모두 교체합니다.
주: 처리될 파일에 바이트 또는 반단어의 홀수가 있는 경우, 데이터가 유실될 수 있습니다.
B 512바이트를 사용하여 블록 입력 및 출력을 레코드에 수행합니다.
주: B 또는 C 옵션을 사용하여 테이프 아카이브를 발췌하거나 생성할 때 블록 인수는 테이프 장치의 물리적 블록 크기의 배수여야 합니다.
B 또는 C 옵션을 사용하여 테이프에서 아카이브를 발췌할 경우 불록 인수는 테이프에서 발췌한 아카이브 크기보다 커선 안됩니다.
B 플래그 및 C 플래그는 서로 배타적입니다. 두 플래그를 모두 나열할 경우 cpio 명령은 플래그 리스트에서 마지막 플래그를 사용합니다.
c ASCII 문자 양식으로 헤더 정보를 읽고 기록합니다. cpio 아카이브가 c 플래그를 사용하여 작성된 경우, 발췌할 때도 c 플래그를 사용해야 합니다.
C Value Value 매개변수와 512 바이트를 곱한 값을 사용하여 레코드에 블록 입출력을 수행합니다. 예를 들면, -C2 플래그는 레코드에 대한 블록 입출력 크기를 1024 바이트로 변경합니다.
d 필요한 만큼 디렉토리를 작성합니다.
f Pattern 매개변수에 대응하는 파일을 제외한 모든 파일을 복사합니다.
l 가능할 때마다, 파일을 복사하는 대신 파일을 링크합니다. 이 플래그는 cpio -p 명령에만 사용할 수 있습니다.
m 이전 파일 수정 시간을 보존합니다. 디렉토리를 복사할 때는 이 플래그가 동작하지 않습니다.
M 디렉토리를 복사할 경우에도 이전 파일 수정 시간을 보존합니다.
r 파일을 대화식으로 재명명합니다. 파일 이름을 변경하지 않으려면 마침표를 하나 입력하거나 키를 누르십시오. Enter 키를 누르는 경우, cpio 명령은 파일을 복사하지 않습니다.
s 바이트를 스왑합니다. 이 플래그는 cpio -i 명령에만 사용됩니다.
주: 처리되는 파일에 바이트의 홀수가 있는 경우, 데이터가 유실될 수 있습니다.
S 반단어(halfword)를 스왑합니다. 이 플래그는 cpio -i 명령에만 사용할 수 있습니다.
주: 처리되는 파일에 반단어(halfword)의 홀수가 있는 경우, 데이터가 유실될 수 있습니다.
t 목차를 작성합니다. 이 조작은 어떤 파일도 복사하지 않습니다.
u 무조건적으로 복사합니다. 이전 파일은 이제 같은 이름을 갖는 새 파일로 대체됩니다.
v 파일 이름을 나열합니다. 이 플래그를 t 플래그와 함께 사용하는 경우, 출력은 ls -l 명령의 출력과 비슷하게 보입니다.
6 구형 파일(예를 들면, UNIX 제 6판 형식으로 기록된 파일)을 처리합니다. 이 플래그는 cpio -i 명령에만 사용할 수 있습니다.
종료 상태
이 명령은 다음과 같은 종료값으로 복귀합니다.
0 정상적으로 완료되었습니다.
>0 오류가 발생하였습니다.
예제
파일을 디스켓에 복사하려면, 다음을 입력하십시오.
cpio -ov /dev/rfd0
이 명령은 filenames 파일에 나열된 경로 이름의 파일을 간략 형식으로 디스켓(>/dev/rfd0)으로 복사합니다. v 플래그를 지정하면 cpio 명령이 각 파일을 복사할 때 파일의 이름을 표시합니다. 이 명령은 파일의 백업 사본을 작성하는 데 유용합니다. 디스켓은 이미 형식화되고, 파일시스템을 포함하거나 마운트하지는 않았어야 합니다.
주: 65535보다 큰 uid 및 gid를 갖는 파일은 cpio 명령을 사용하여 아카이브할 수 없습니다. 그런 경우에, 백업과 복원을 사용해야 합니다.
현재 디렉토리에서 디스켓으로 파일을 복사하려면 다음과 같이 입력하십시오.
ls *.c | cpio -ov >/dev/rfd0
이 명령은 이름이 .c로 끝나는 모든 파일들을 현재 디렉토리에 복사합니다.
현재 디렉토리 및 모든 서브디렉토리를 디스켓으로 복사하려면 다음과 같이 입력하십시오.
find . -print | cpio -ov >/dev/rfd0
이 명령열은 현재 디렉토리(.)로 시작하는 디렉토리 트리를 저장합니다. 그의 모든 서브디렉토리 및 파일을 포함합니다. 다음과 같이 입력하여 이것을 더 빠르게 수행하십시오.
find . -cpio /dev/rfd0 -print
-print 항목은 파일이 복사될 때마다 각 파일의 이름을 표시합니다.
cpio 명령으로 디스켓에 저장된 파일을 나열하려면 다음과 같이 입력하십시오.
cpio -itv
이 명령은 이전에 cpio 명령 형식으로 /dev/rfd0 파일에 저장한 데이터의 목차를 표시합니다. 이 리스트는 ls -l 명령으로 생성되는 긴 디렉토리 리스트와 비슷합니다. 파일 경로 이름만을 나열하려면, -it 플래그만 사용하십시오.
디스켓에서 cpio 명령으로 저장한 파일을 복사하려면 다음과 같이 입력하십시오.
cpio -idmv
이 명령은 이전에 cpio 명령으로 /dev/rfd0 파일에 저장한 파일을 다시 파일시스템으로 복사합니다(-i 플래그 지정. d 플래그를 지정하면 디렉토리 트리가 저장된 경우 cpio 명령에서 해당 디렉토리를 작성할 수 있습니다. m 플래그는 파일이 저장될 때 유효한 최종 수정시간을 유지합니다. v 플래그를 지정하면 cpio 명령이 각 파일을 복사할 때 파일의 이름을 표시합니다.
디스켓에서 선택한 파일을 복사하려면, 다음을 입력하십시오.
cpio -i "*.c" "*.o" 이 명령은 디스켓에서 .c 또는 .o로 끝나는 파일을 복사합니다. 쉘이 *(별표)를 패턴-대응 문자로 취급하는 것을 막기 위해 패턴 "*.c" 및 "*.o"는 따옴표로 묶어야 함을 주의하십시오. 이것은 cpio 명령 자체가 패턴 대응 문자를 해독하는 특별한 경우입니다.
디스켓에서 복사할 때 파일을 재명명하려면 다음과 같이 입력하십시오.
cpio -ir
-r 플래그를 지정하면 cpio 명령이 디스켓에서 복사하기 전에 각 파일을 재명명할지 여부를 묻습니다. 예를 들면 다음과 같은 메세지가 있습니다.
Rename
이 메세지는 prog.c로 저장된 파일을 복사할 때 이 파일에 새로운 이름을 지정할지 묻습니다. 파일을 재명명하려면, 새 이름을 입력하고 Enter 키를 누르십시오. 같은 이름을 보존하려면, 그 이름을 다시 입력해야 합니다. 파일 복사를 완전히 피하려면, Enter 키를 누르십시오.
디렉토리 및 모든 서브디렉토리를 복사하려면 다음과 같이 입력하십시오.
mkdir /home/jim/newdir
find . -print | cpio -pdl /home/jim/newdir
이 명령은 현재 디렉토리와 그에 속한 모든 서브디렉토리 및 파일을 비롯해 현재 디렉토리 트리를 복제합니다. 복제는 새로운 /home/jim/newdir 디렉토리에 들어갑니다. l 플래그는 cpio 명령이 가능한 경우 파일을 복사하는 대신 링크하게 만듭니다.
주: 9348 자기 테이프 장치 모델 12에 대한 cpio의 성능은 디폴트 블록 크기를 변경하여 개선할 수 있습니다. 블록 크기를 변경하려면, 명령행에 다음과 같이 입력하십시오.
chdev -1 -a block_size=32k
파일
/usr/bin/cpio cpio 명령이 있습니다.
관련 정보
find 명령, ksh 명령, ln 명령, ls 명령.
cpio 파일 형식, rmt 특수 파일.