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

dd
dd dd 명령 목적 파일을 변환 및 복사합니다. 구문
dd [ cbs=BlockSize ] [ count=InputBlocks ] [ files=InputFiles ] [ fskip=SkipEOFs ] [ if=InFile ] [ of=OutFile ] [ seek=RecordNumber ] [ skip=SkipInputBlocks ] [ ibs=InputBlockSize ] [ obs=OutputBlockSize ] [ bs=BlockSize ] [ conv= [ ascii | block | ebcdic | ibm | unblock ] [ lcase | ucase ] [ iblock ] [ noerror ] [ swab ] [ sync ] [ oblock ] [ notrunc ] ]
dd [ Option=Value ]
설명
dd 명령은 InFile 매개변수나 표준 입력을 읽고, 지정한 변환을 수행한 다음 변환된 데이터를 OutFile 매개변수나 표준 출력으로 복사합니다. 입력 및 출력 블록 크기는 원시 물리적 I/O의 장점을 수용하도록 지정할 수 있습니다.
주: 블록이란 용어는 한 번의 조작으로 dd 명령에서 읽거나 기록한 데이터 양을 가리키며 반드시 디스크 블록과 같은 크기일 필요는 없습니다.
크기를 지정할 경우에는 바이트 단위로 지정해야 합니다. w, b 또는 k로 끝나는 숫자는 각각 2, 512 또는 1024의 배수를 지정합니다. x 또는 *(별표)로 분리된 한 쌍의 숫자는 제품을 나타냅니다.
주: count 매개변수에는 복사될 블록 수(바이트 수가 아님)를 사용해야 합니다.
conv=ascii 및 conv=ebcdic 플래그와 관련된 문자 세트 맵핑은 보충 작업입니다. 이 플래그는 대부분의 워크스테이션과 키펀치에서 사용되는 ASCII 문자와 EBCDIC 문자의 일부를 대응시킵니다.
cbs 매개변수 값은 block, unblock, ascii, ebcdic 또는 ibm 변환 중 하나가 지정되었을 경우에 사용하십시오. unblock 또는 ascii 매개변수가 지정되면, dd 명령은 고정 길이를 가변 길이로 변환합니다. 그렇지 않으면, 가변 길이를 고정 길이로 변환합니다. cbs 매개변수는 고정 길이를 판별합니다.
주의: 최소 입력 블록보다 작게 cbs 매개변수 값을 지정하면, 변환된 블록이 절단됩니다.
위의 작업을 완료한 후, dd 명령은 전체 및 입출력 블록의 수를 보고합니다.
주:
일반적으로 사용자에게는 출력 파일에 대한 쓰기 액세스 권한만 있으면 됩니다. 그러나 출력 파일이 직접 액세스 장치에 존재하지 않고 사용자가 seek 플래그를 사용할 경우에는 해당 파일에 대한 읽기 액세스 권한도 가지고 있어야 합니다.
The dd 명령은 conv=ascii 또는 conv=unblock 플래그 세트로 변환할 경우에만 캐리지 리턴 문자를 삽입합니다. conv=ebcdic, conv=ibm 또는 conv=block 플래그 세트로 변환할 경우에만 캐리지 리턴 문자를 채웁니다.
파일을 테이프로 복사하는 것이 가능할 경우에는 dd 명령 대신 backup, tar 또는 cpio 명령을 사용하십시오. 이 명령은 테이프 장치와 함께 사용하도록 고안된 것입니다. 테이프 장치 사용에 대한 지세한 정보는 rmt 특수 파일을 사용하십시오.
bs, ibs 및 obs 플래그로 지정된 블록 크기 값은 사용되는 미디어의 물리적 블록 크기의 배수여야 합니다.
conv=sync 플래그를 지정한 경우 dd 명령은 일부 입력 블록을 널(null)로 채웁니다. 따라서, dd 명령은 읽는 도중에 데이터 블록(ibs 플래그에 지정된 대로)을 전부 수신하지 못하면 데이터 스트림 중간에 널(null)을 삽입합니다. 이는 파이프로부터 읽을 경우에도 마찬가지입니다.
bs 플래그를 스스로 지정하고 sync, noerror 또는 notrunc 이외의 다른 변환을 지정하지 않은 경우 각 입력 블록의 데이터는 별도의 출력 블록으로 기록됩니다. 읽기에서 전체 블록 이하를 리턴하고 sync를 지정하지 않은 경우 출력 결과 블록 크기는 입력 블록 크기와 같게 됩니다. bs 플래그를 지정하지 않거나 sync, noerror 또는 notrunc 이외의 변환을 지정할 경우, 입력을 마칠 때까지 입력이 처리되어 완전한 크기의 출력 블록에 모아지게 됩니다.
장치간 확장
입력 파일이 출력 장치의 물리적 크기보다 클 경우 dd를 장치에서 확장할 수 있습니다.
주: 블록 크기가 적절하지 않으면 데이터가 불일치하거나 중첩될 수 있으므로 블록 크기 bs를 장치의 물리적 크기의 배수로 정확히 지정해야 합니다.
InFile이나 OutFile 매개변수 중 하나가 stdin이나 stdout일 경우 장치 간의 dd 확장은 발생하지 않습니다.
출력 장치가 가득 찼을 경우 기록하는 중에 dd에서 다음 장치를 프롬프트하는 것과 같은 방법으로 확장이 발생합니다. 입력 장치로부터 읽는 중에 dd는 장치 끝에 도달하지 않았더라도 입력 장치에서 데이터를 완전히 읽어들였으면 다음 장치를 프롬프트합니다. 이럴 경우 'n'을 눌러 중지해야 합니다.
플래그
bs=BlockSize 입력 및 출력 블록 크기를 모두 지정하고 ibs 및 obs 플래그를 대체합니다. bs 플래그에 지정된 블록 크기는 사용되는 미디어의 물리적 블록 크기의 배수이어야 합니다.
cbs=BlockSize conv=block처럼 가변 길이를 고정 길이로, 그리고 고정 길이를 가변 길이로 변환하기 위한 변환 블록 크기를 지정합니다.
count=InputBlocks InputBlocks 변수에서 지정한 수의 입력 블록만 복사합니다.
files=InputFiles 종료하기 전에 입력 파일의 InputFiles 변수 값에서 지정한 파일 개수를 복사합니다. 입력이 자기 테이프나 유사한 장치일 경우에만 해당합니다.
fskip=SkipEOFs 복사를 시작하기 전에 SkipEOFs 변수가 지정한 파일의 끝 문자만큼 건너뜁니다. 이 SkipEOFs 변수는 여러 개의 마그네틱 테이프상에 위치를 지정할 때 유용합니다.
ibs=InputBlockSize 입력 블록의 크기를 지정합니다. 디폴트 값은 512 바이트 또는 하나의 블록입니다. ibs 플래그로 지정된 블록 크기 값은 사용되는 미디어의 물리적 블록 크기의 배수여야 합니다.
if=InFile 입력 파일 이름을 지정합니다. 표준 입력 파일이 디폴트 파일입니다.
obs=OutputBlockSize 출력 블록의 크기를 지정합니다. 디폴트 값은 512 바이트 또는 하나의 블록입니다. obs 플래그로 지정된 블록 크기 값은 사용되는 미디어의 물리적 블록 크기의 배수여야 합니다.
of=OutFile 출력 파일 이름을 지정합니다. 표준 출력 파일이 디폴트 파일입니다.
seek=RecordNumber 복사하기 전에 RecordNumber 변수에서 지정한 레코드를 출력 파일의 처음부터 탐색합니다.
skip=SkipInputBlocks 복사를 시작하기 전에 지정된 입력 블록의 SkipInputBlocks 값을 건너뜁니다.
conv= Conversion,.... 하나 이상의 변환 옵션을 지정합니다. 여러 개의 변환을 지정할 때는 쉼표로 각각을 구분해야 합니다. 다음 리스트에서 가능한 옵션을 설명합니다.
ascii
EBCDIC를 ASCII로 변환합니다. 이 옵션은 ebcdic, ibm, block 및 unblock 옵션과 호환되지 않습니다.
block
가변 길이 레코드를 고정 길이 레코드로 변환합니다. 그 길이는 변환 블록 크기(cbs)에 의해 결정됩니다. 이 옵션은 ascii, ebcdic, ibm 및 unblock 옵션과 호환되지 않습니다.
ebcdic
ASCII를 표준 EBCDIC로 변환합니다. 이 옵션은 ascii, ibm, block 및 unblock 옵션과 호환되지 않습니다.
ibm
ASCII를 IBM 버전 EBCDIC로 변환합니다. 이 옵션은 ascii, ebcdic, block 및 unblock 옵션과 호환되지 않습니다.
iblock, oblock
직접 액세스 장치상의 읽기 및 쓰기 오류로 인해 발생하는 데이터 손실을 최소화합니다. iblock 변수를 지정했고 블록(블록의 크기가 512 바이트 또는 ibs=InputBlockSize 변수에 지정된 크기인 경우)을 읽는 중에 오류가 발생한 경우, dd 명령은 보다 작은 단위의 데이터 블록을 다시 읽으려고 시도합니다. dd 명령이 입력 장치의 섹터 크기를 판별할 수 있으면, 손상된 블록을 한 번에 한 섹터씩 읽습니다. 그렇지 않으면, 한 번에 512 바이트씩 읽습니다. 입력 블록 크기(ibs)는 이 재시도 크기의 배수이어야 합니다. 이 옵션은 단일 섹터에 대해서는 읽기 오류에 연관되어 데이터가 유실될 수 있습니다. oblock 변환은 출력에서 이와 유사하게 작동합니다.
lcase
모든 영문자를 소문자로 만듭니다.
noerror
오류시에도 처리를 중단하지 않습니다.
notrunc
출력 파일을 절단하지 않습니다. 그 대신 출력에 정확하게 쓰여지지 않은 블록들은 보존됩니다.
ucase
모든 영문자를 대문자로 변환합니다.
swab
모든 바이트 쌍을 서로 교체합니다.
sync
모든 입력 블록을 ibs 값까지 채웁니다.
unblock
고정 길이 블록을 가변 길이로 변환합니다. 그 길이는 변환 블록 크기(cbs)에 의해 결정됩니다. 이 옵션은 ascii, ebcdic, ibm 및 block 옵션과 호환되지 않습니다.
종료 상태
이 명령은 다음 종료 값을 리턴합니다.
0 입력 파일이 성공적으로 복사되었습니다.
>0 오류가 발생했습니다.
예제
ASCII 텍스트 파일을 EBCDIC로 변환하려면 다음과 같이 입력하십시오.
dd if=text.ascii of=text.ebcdic conv=ebcdic
이 명령은 text.ascii 파일을 EBCDIC로 변환하고, EBCDIC 버전을 text.ebcdic 파일에 저장합니다.
주: conv=ebcdic 매개변수를 지정할 경우 dd 명령은 ASCII ^ 문자를 사용하지 않은 EBCDIC 문자(9A 16진수)로, ASCII ~를 EBCDIC ^(NOT 기호)로 변환합니다.
가변 길이를 갖는 ASCII 레코드 파일 /etc/passwd를 132 바이트의 고정 길이의 EBCDIC 레코드로 변환하려면 다음과 같이 입력하십시오.
dd if=/etc/passwd cbs=132 conv=ebcdic of=/tmp/passwd.ebcdic
레코드당 132 바이트 EBCDIC 파일을 가변 길이 ASCII 행에 소문자로 변환하려면 다음과 같이 입력하십시오.
dd if=/tmp/passwd.ebcdic cbs=132 conv=ascii of=/tmp/passwd.ascii
가변 길이 레코드 ASCII 파일 /etc/passwd를 IBM 버전의 132 바이트 고정 길이 레코드 EBCDIC로 변환하려면 다음과 같이 입력하십시오.
dd if=/etc/passwd cbs=132 conv=ibm of=/tmp/passwd.ibm
1 KB 블록을 사용하는 테이프에서 2 KB 블록을 사용하는 다른 테이프로 복사하려면 다음과 같이 입력하십시오.
dd if=/dev/rmt0 ibs=1024 obs=2048 of=/dev/rmt1
dd 명령을 필터로 사용하려면 다음과 같이 입력하십시오.
ls -l | dd conv=ucase
이 명령은 현재 디렉토리의 긴 리스트를 대문자로 표시해줍니다.
주: 9348 자기 테이프 장치 모델 12에 대한 dd 명령 및 cpio 명령의 성능은 디폴트 블록 크기를 변경하여 개선할 수 있습니다. 블록 크기를 변경하려면, 다음과 같은 방법으로 chdev 명령을 사용하십시오.
chdev -l Device_name -a block_size=32k
512 바이트의 36개 블록을 사용하여 3.5인치 1.4 MB 디스켓으로 효과적인 전송을 수행하려면 다음과 같이 입력하십시오.
dd if=Filename of=/dev/rfd0 bs=36b conv=sync
이 명령은 Filename 매개변수의 값을 디스켓 장치에 한 번에 한 실린더씩 씁니다. 디스크로부터 읽기를 수행할 때와 파일의 크기가 디스켓 블록 크기의 배수가 아닐 때는 conv=sync가 필요합니다. dd 명령에 대한 입력이 파일 대신에 파이프일 경우에는 이를 시도하지 마십시오. 이것은 대부분의 입력을 마지막 블록이 아닌 널(null)로 채웁니다.
블록 크기를 720b 블록으로 설정하여 입력 파일의 블록을 1.44 MB 디스켓으로 복사하려면 다음과 같이 입력하십시오.
dd if=testfile of=/dev/fd0 bs=720b conv=sync
주: 입력 파일이 출력 장치의 물리적인 크기보다 클 경우 dd는 다른 장치를 프롬프트합니다.
블록 크기를 32k 블록으로 설정하여 입력 파일의 블록을 테이프로 복사하려면 다음과 같이 입력하십시오.
dd if=inputfile of=/dev/rmt0 bs=32k conv=sync
블록 크기를 32k 블록으로 설정하여 테이프의 데이터를 현재 디렉토리의 파일로 복사하려면 다음과 같이 입력하십시오.
dd if=/dev/rmt0 of=outfile bs=32k conv=sync
파일
/usr/bin/dd dd 명령을 포함합니다.
관련 정보
backup, cp, cpio, tar, tr 명령.
rmt 특수 파일.