dd指令的使用

dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

数据备份与恢复

整盘数据备份与恢复

(1)备份

##将本地的/dev/hdx整盘备份到/dev/hdy

1
dd  if=/dev/hdx  of=/dev/hdy

##将/dev/hdx全盘数据备份到指定路径的image文件

1
dd  if=/dev/hdx  of=/path/to/image

##备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径(bzip2工具也一样可使用)

1
dd  if=/dev/hdx  |  gzip > /path/to/image.gz

(2)恢复

##将备份文件恢复到指定盘

1
dd if=/path/to/image of=/dev/hdx

##将压缩的备份文件恢复到指定盘

1
gzip -dc /path/to/image.gz | dd of=/dev/hdx

利用netcat与dd指令进行远程备份

(1)备份

假设:接收端的IP地址为:192.168.1.200;发送端的IP地址为:192.168.1.100 第一步:在接收端上执行命令:

1
nc -l 1234 | dd of=/dev/sdb1 或者 nc -l 1234 | gzip -dc | dd of=/dev/sdb1

,即:nc指令的输出为标准输出,通过管道将nc指令的输出作为dd指令的输入,最后将数据写入/dev/sdb1中

(2)恢复

第二步:在发送端上执行命令:

1
dd if=/dev/hda1 | nc 192.168.1.200 1234 或者 dd if=/dev/hda1 | gzip | nc 192.168.1.200 1234

即:将/dev/hda1设备上的数据作为dd的输入,而标准输出作为dd指令的输出,但是由于管道,所以将dd的标准输出将作为nc指令的输出

备份MBR

(1)备份 ##备份磁盘开始的512Byte大小的MBR信息到指定文件

1
dd  if=/dev/hdx  of=/path/to/image  count=1  bs=512

(2)恢复 ##将备份的MBR信息写到磁盘开始部分

1
dd  if=/path/to/image  of=/dev/hdx

备份软盘

##将软驱数据备份到当前目录的disk.img文件

1
dd if=/dev/fd0 of=disk.img count=1 bs=1440k

拷贝内存数据到硬盘

##将内存里的数据拷贝到backup目录下的mem.bin文件

1
dd if=/dev/mem of=/backup/mem.bin bs=1024

将光盘制作成ISO镜像文件

##拷贝光盘数据到backup文件夹下,并保存为cd.iso文件,再进行刻录

1
2
dd  if=/dev/cdrom  of=/backup/cd.iso
cdrecord -v cd.iso

增加swap分区文件大小

第一步:创建一个足够大的文件(250M)

1
dd if=/dev/zero of=/swapfile bs=1024 count=262144

第二步:把这个文件变成swap文件

1
mkswap /swapfile

第三步:启用这个swap文件

1
swapon /swapfile

第四步:在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行

1
/swapfile swap swap defaults 0 0

注意:查看当前swap使用情况,请查看文件/proc/swaps;创建交换分区其实还有另一种方法:fdisk指令法

销毁磁盘数据

##利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作无法执行

1
dd if=/dev/urandom of=/dev/hda1