重要
最重要的事:
1.简介
dd指令是一个简单的复制指令,它不管源和目标的编码、格式、数据结构,简单粗暴的把二进制数据从A复制到B。
所以恢复的目标硬盘甚至不需要提前分区,因为dd会把分区信息也写入。
不管源数据是文件、分区、磁盘还是光盘,都可以进行数据备份。
优点:
缺点:
2. 操作
2.1 整盘复制
目标磁盘需要比源磁盘大。
if=
表示源磁盘,of=
表示目标磁盘
1
| dd if=/dev/sda of=/dev/sdb
|
2.2 磁盘备份成文件再恢复
2.2.1 磁盘->文件
bs参数: 一次拷贝的字节数。如:bs=4096。合理使用bs参数可优化dd执行速度,bs的合理范围要参考本机的性能进行具体设置。
1
| dd if=/dev/sda of=/home/sda.img bs=4096
|
1
| dd if=/dev/sda | gzip > /home/sda.img
|
2.2.2 文件->磁盘
1
| dd if=sdadisk.img of=/dev/sdb
|
1
| gzip -dc /home/sda.img | dd of=/dev/sda
|
2.3 分区备份
把分区直接备份到另一个分区,就需要生成一个新的分区,这个分区的大小不能比源分区小,只能和源分区大小一致或比它大。
查看磁盘sdb的分区表,查看所有分区uuid,此时各分区uuid各不相同。
备份
1
| dd if=/dev/sda1 of=/dev/sdb1
|
恢复
1
| dd if=/dev/sdb1 of=/dev/sda1
|
修复还原到大小不一样的分区时的设置:
1
2
3
| sudo dd if=/dev/sda1 of=/dev/sdb1
sudo e2fsck -f /dev/sdb1
sudo resize2fs /dev/sdb1
|
2.4 查看进度
1
| watch -n 5 killall -USR1 dd
|
2.5 销毁磁盘数据
原磁盘包含有敏感数据,因为所有删除甚至格式化的内容都有可能使用技术手段进行还原。使用dd命令即可完全抹盘。
使用0填充整个硬盘:
1
| dd if=/dev/zero of=/dev/sda1
|
或者,使用随机数填充整个硬盘,效果更佳:
1
| dd if=/dev/urandom of=/dev/sda1
|
2.6 磁盘测速
1
2
| dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
|
2.7 磁盘修复
1
| dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda
|
2.8 制作系统盘
1
| dd if=ubuntu-server-amd64.iso if=/dev/sdb
|
2.0 写指定大小文件
如大文件测试上传或下载的速度。下面命令生成一个文件名为 file.img 大小为 1G 的文件。
1
| dd if=/dev/zero of=file.img bs=1M count=1024
|
参考链接