Linuxコマンド辞典 ddコマンド(ファイル・ディレクトリ)
ファイルを変換してコピーするコマンド ddの概要や基本的な使用方法を記載。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
参考サイト:Man page of INSTALL
使用方法
ファイルをブロック単位でコピーします。実際にはファイル変換のために使われることはあまりなく、直接ディスクに書き込んだり、任意のサイズのファイル作成したり、ディスクを丸ごとコピーしたりする際に使われます。簡単なファイルコピーやデバイスファイル(HDD,CD-ROM)からファイルへのコピー、ディスクイメージをデバイスに出力際に使用します。また、KVMやXenの仮想マシンのイメージ作成などにも作成にも利用できます。
書式
$ dd [オプション]
オプション
if=入力ファイル | 入力側ファイルを指定する(デフォルトは標準入力) |
of=出力ファイル | 出力側ファイルを指定する(デフォルトは標準出力) |
ibs=バイト数 | 指定したバイト数ずつ読み込む(デフォルトは512バイト) |
obs=バイト数 | 指定したバイト数ずつ書き込む(デフォルトは512バイト) |
bs=バイト数 | 1回に読み書きするブロックサイズを指定する(デフォルトは512バイト) |
count=回数 | 回数分の入力ブロックをコピーする |
conv=オプション | ファイル変換方法を指定する。 |
指定可能な主なオプション(「,」で複数指定可能)
オプション | 説明 |
---|---|
lcase | 大文字を小文字に変換する |
ucase | 小文字を大文字に変換する |
nocreat | 出力ファイルを作成しない |
noerror | エラーが出ても無視する |
seek=ブロック数 | 指定ブロック数スキップしてから出力する |
skip=ブロック数 | 指定ブロック数スキップしてから入力する |
status=[noxferinone] | noxferの場合はI/O状態を表示しない、noneはすべて表示しない |
サンプル
サイズが5MiB(1Mib×5)のファイルswapを作成する
$ dd if=/dev/zero of=/tmp/swap bs=1M count=5
/dev/zero
ゼロデータ(特殊文字\D)を出力し続ける特殊ファイル
1024の累乗の場合はK,M,Gという単位。1000の累乗の場合はKB,MB,GBという単位で指定します。
ディスクを丸ごとコピーする
サンプル
$ dd if=/dev/sdb of=/dev/sdc
ISOイメージファイルをUSBメモリに書き込む
インストーラーが起動するブートイメージをUSBメモリ等に書き込む
サンプル
$ dd if=/tmp/image.iso of=/dev/sdb bs=512k
ディスクイメージを作成してマウントする
サンプル
#ブロックサイズを1MB、1024回カウントして1GBのイメージを作成
$ dd if=/dev/zero of=/xen/disk01.img bs=1M count=1024
#イメージにext4ファイルシステムを作成
$ mkfs.ext4 -j -F /xen/disk01.img
#ループバックマウントオプションを利用してマウントする。
$ mount -o loop /xen/disk01.img /mnt/xen
ファイルを大文字から小文字に変換する
$ dd conv=lcase if=sample1.txt of=sample2.txt
サンプル
[test@ ~]$ cat sample1.txt
ABCDEFG
1234567
[test@ ~]$ dd conv=lcase if=sample1.txt of=sample2.txt
0+1 records in
0+1 records out
17 bytes (17 B) copied, 0.00025454 s, 66.8 kB/s
[test@ ~]$ cat sample2.txt
abcdefg
1234567
[test@ ~]$