[usage]
dd if=소스 of=타겟 bs=버퍼사이즈 count=복사할섹터수 status=progress
[example]
dd if=/dev/sdb of=/dev/sdc bs=10M status=progress
(/dev/sdb 를 /dev/sdc 로 복사, 버퍼 사이즈를 크게 두면 속도가 빨라진다)
dd if=/dev/zero of=test.bin bs=1K count=100
(100K 크기를 갖는 aa.bin 파일이 생성)
dd if=/dev/zero of=/disk1/t1 bs=65536 count=2000 oflag=direct
(디스크 속도 측정하기 (or Disk IO 부하주기))
[options]
status 옵션중 progress는 coreutils >= 8.24 부터 지원
Ubuntu 16.04 에서는 기본버전이 8.25가 탑재되어있어 사용이 가능하다.
bs=BYTES : 한번에 BYTES씩 읽어들이고 출력. ibs와 obs를 한번에 지정한 것과 같음 ((ibs, obs 값 무시)
cbs=BYTES : 한번에 BYTES씩 변환작업을 함
conv=CONVS : ,로 분리된 단어들을 파일로 변환
count=BLOCKS : 입력블록의 ibs크기만큼만 복사
ibs=BYTES : 입력단위로 한번에 BYTES 단위로 읽어 들임
if=FILE : 표준입력대신 지정된 파일을 입력으로 받음
obs=BYTES : 출력단위로 한번에 BYTES 단위로 출력
of=FILE : 표준출력대신 지정된 파일에 출력
seek=BLOCKS : 출력시작시 지정된 BLOCKS의 단위만큼 obs 크기를 건너뛰고 출력을 시작함
skip=BLOCKS : 입력시작시 지정된 BLOCKS의 단위만큼 ibs 크기를 건너뛰고 입력을 시작함
oflag=flag : 표준출력 파일에 사용되는 flag 옵션
(flag가 direct 시, output 파일에 buffer cache를 사용하지 않고 다이랙트로 I/O를 한다)
ascii : EBCDIC 코드를 ASCII 코드로 변환함
ebcdic : ASCII 코드를 EBCDIC 코드로 변환함
ibm : ASCII 코드를 EBCDIC 코드로, EBCDIC 코드를 ASCII 코드로 변환함
block : cbs로 변환작ㄱ업과정에서 입력문자내에 있는 개행문자들을 공백문자로 변환함
unblock : block와는 반대로 cbs로 변환작업과정에서 입력문자내에 있는 공백문자들을 개행문자로 변환함
lcase : 영문대문자를 영문소문자로 변환
notrunc : 출력파일을 자르지 않고 출력
ucase : 영문 소문자를 영문대문자로 변환
swap : 입력된 두바이트를 바꿈
noerror : 입력데이터를 읽을 때에 에러가 발생하더라도 계속 진행
sync : 입력된 ibs와 출력하는 obs사이에 차이가 있을 경우 그 여백공간을 NULL 문자로 채움
dd의 입출력시에 사용되는 단위들
c : Character, 1byte
w : Word, 2bytes
k : Kilo Bytes, 1024bytes
b : Block, 512bytes
[PV 를 이용한 진행 상태 보기, Example Assuming a 2GB disk being copied from /dev/sdb ]
- command
sudo dd if=/dev/sdb | pv -s 2G | dd of=DriveCopy1.dd bs=4096
- output
440MB 0:00:38 [11.6MB/s] [======> ] 21% ETA 0:02:19
[reference]
https://ko.wikipedia.org/wiki/Dd_(%EC%9C%A0%EB%8B%89%EC%8A%A4)
(Pipe Viewer , dialog 화면과 연동한 방법도 소개)
https://askubuntu.com/questions/215505/how-do-you-monitor-the-progress-of-dd