Dd_(UNIX)
[Wikipedia|▼Menu]

ddはUnix系のシステムにあるプログラム(コマンド)で、データのコピーや変換をブロックデバイスを直接読み書きして行うことが特徴である。dataset definitionの略であるが、IBMメインフレームJob Control Language(ジョブ制御言語、JCL)の「DD文」(DD statement)に由来するため、引数の構文が、Unixの一般的なコマンドの引数のそれとは激しく異なっている(datasetというのはメインフレーム用語)。

ddの主な機能は指定されたバイト数もしくはブロック数のデータのコピーであり、この機能は、ハードディスク(全体もしくはパーティション単位、またはブートセクター等)のバックアップや、/dev/zero/dev/randomを用いて指定された領域を完全消去するために利用される。同様にディスクの(可能な限り)全状態をそのままクローンしたい、コンピュータ・フォレンジックスなどの場合にも使われる。

ddコマンドが行うようなディスクの直接の読み書きには、通常は管理者権限が必要であり、従って危険なコマンドであっても簡単に実行できてしまう状態で作業していることが多い。そしてddは、例えば、入力と出力の指定をうっかり逆にしただけで(具体的には "of" と "if" の、QWERTYキーボードでは隣の1文字の違いである)、大事なデータをバックアップする代わりに、まっさらなディスクの内容をそれに上書きして消してしまう、という恐ろしいことを起こし得る。そのためしばしばベテランは、data destroyer(あるいはdisk destroyer、destroyer=破壊者)の略である、などという。なお、copy commandあるいはcopy and convertの略でccにしようとしたが、C言語コンパイラ(ないしコンパイラドライバ)のccがあったのでひとつずらしてddにした、という説が流布していたが、これは誤りであることがUNIXの開発者であるデニス・リッチー氏による投稿で確定している。[1]
コマンドラインに指定できるオプション

入出力を指定するオプション

if=[file] : 標準入力の代わりに、ファイル file から読み込む

of=[file] : 標準出力の代わりに、ファイル file へ書き出す

コピーするサイズを指定するオプション

count=[blocks] : ibs バイトのブロック blocks 個分だけ入力ファイルをコピーする

読み書きの開始位置を指定するオプション

skip=[blocks] : ibs バイトのブロック blocks 個分だけ入力ファイルの先頭をスキップする

seek=[blocks] : 出力の先頭にある obs バイトのブロック blocks 個分を書き出さない

1回の読み書きのデータサイズを指定するオプション

bs=[bytes] : 一 度に bytes バイトずつ読み込みと書き出しをする

ibs=[bytes] : 一度に bytes バイトずつ読み込む。デフォルトは 512

obs=[bytes] : 一度に bytes バイトずつ書き出す。デフォルトは 512

オンザフライのデータ変換を指定するオプション

conv=[CONVERSION]noerror : 読み込みエラーが発生しても継続するsync : 入力ブロックサイズがibsに指定されていないバイト数に満たないとき、パディングを行う

使用例

ハードディスク上のパーティションを、別のディスクにコピーするdd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=notrunc,noerror

ハードディスク全体を完全消去するdd if=/dev/urandom of=/dev/hda

CDをiso仮想イメージファイルに変換するdd if=/dev/cdrom of=/home/sam/myCD.iso bs=2048 conv=sync,notrunc

ハードディスクのMBRをバックアップするdd if=/dev/sda of=/home/sam/MBR.image bs=446 count=1
関連項目

ddrescue : 不良セクタのあるディスクの扱いを得意とするデータコピー・プログラム

パーティション

ディスクセクタ

データの完全消去

外部リンク

dd(1)
man page(JM Project)

参考文献^ alt.folklore.computersでの議論










Unixコマンド
ファイルとファイルシステム管理

cat

chattr(英語版)

chmod

chown

chgrp

cksum

cmp

cp

dd

du

df(英語版)

file

fsck

fuser(英語版)

ln

ls

lsof

mkdir

mount

mv

pax

pwd

rm

rmdir

size

split

tee

touch

type(英語版)

umask(英語版)

プロセス管理

at

bg

chroot

cron

fg

kill

killall

nice

pgrep

pidof

pkill

ps

pstree(英語版)

reboot

shutdown

time

top

ユーザ管理/環境

clear

env

exit

finger

history(英語版)

id

logname(英語版)

mesg

passwd

su

sudo

uptime

talk

tput(英語版)

uname

w

wall

who

whoami

write

テキスト処理

awk

banner

basename

comm(英語版)

csplit(英語版)

cut

diff

dirname

ed

ex(英語版)

fmt

fold(英語版)

head

iconv

join(英語版)

less

m4

more

nkf

nl

paste(英語版)

patch

printf(英語版)

read(英語版)

sed

sort

spell(英語版)

strings

tail

tr

troff

uniq

vi

wc

xargs

yes

シェルビルトイン

alias

cd

echo

test(英語版)

unset

wait

通信

dig

host(英語版)

ifconfig

inetd

ip (iproute2)

netcat

netstat

nslookup

ping

rdate(英語版)

rlogin

route

ssh

traceroute

検索

find

grep

locate(英語版)

whatis(英語版)

whereis(英語版)

マニュアル

apropos(英語版)


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:13 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef