dd
dd はディスクイメージを保存・リストアするのに便利なコマンドです。
ifを指定しなければ標準入力を使用。同様に、ofを指定しなければ標準出力を使用します。
以下、使い方をメモしておきます。 (コピー&ペーストで利用する場合は充分気をつけて利用してください)
ディスクイメージをfilename{へ保存, リストア}する例。 (リストアのコマンドは、ベンダ等から配布されているisoイメージ等をusbメディア等 に書き込む際等によく使用されます)
dd if=/dev/sdx of=filename bs=1M
dd if=filename of=/dev/sdx bs=1M
gzipで圧縮して{保存, リストア}する例。
dd if=/dev/sdx bs=1M | gzip -c filename.gz
gzip -cd filename.gz | dd of=/dev/sdx bs=1M
ディスクイメージを、gzipで圧縮・転送し、remotehostのfilename.gz{へ保存, からリ ストア}する例。
dd if=/dev/sdx bs=1M | gzip -c | ssh user@remotehost dd of=filename.gz
ssh username@remotehost dd if=filename.gz | gzip -cd | dd of=/dev/sdx bs=1M
ディスクイメージを、gzipで圧縮・転送し、remotehostのディスク{へ, から}直接リス トアする。
dd if=/dev/sdx bs=1M | gzip -c | ssh user@remotehost 'gzip -cd | dd of=/dev/sdx bs=1M'
または
ssh user@remotehost 'dd if=/dev/sdx bs=1M | gzip -c' | gzip -cd | dd of=/dev/sdx bs=1M
create empty file
dd if=/dev/zero of=file.img bs=1M count=512
mkfs -t ext4 file.img
mount -o loop file.img /mnt
sparse file
dd if=/dev/zero of=file.img bs=1M count=0 seek=512
ls -lhs file.img
tar cSf tarfile.tar file.img
These image files could be used as block devices by loopback device. At first find available loop device. Then use it.
$ losetup -f
$ losetup /dev/loop0 file.img
$ losetup -a
$ mkfs -t ext2 /dev/loop0 100
$ mount -t ext2 /dev/loop0 /mnt
$ umount /dev/loop0
$ losetup -d /dev/loop0
When you mount an image backup file which has partition table, it need to specify offset:
$ fdisk -l file.img
$ mount -o loop,ro,offset=$((sector_size*start_position)) file.img /mountpoint
or
$ kpartx -a -v file.img
$ mount /dev/mapper/loop0p1 /mountpoint
$ umount /mountpoint
$ kpartx -d -v file.img
wipe a disk
$ dd if=/dev/zero of=/dev/sdx bs=4096
$ dd if=/dev/urandom of=/dev/sdx bs=4096
or you can use shred command.
$ shred --verbose --random-source=/dev/urandom -n 1 /dev/sdx