linux dd 命令备份硬盘用法整理

基本用法

lsblk # 查看并仔细确认分区
dd if=/dev/sda of=/PATH/disk.img

使用bs参数加快备份速度

dd bs=8192 if=/dev/sda of=/PATH/disk.img

参数说明:

ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。

确定硬盘的最佳块大小:

dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。

遇到磁盘错误时继续执行

dd if=/dev/sda of=/PATH/disk.img conv=sync,noerror

压缩镜像大小

备份:

dd if=/dev/hdX | gzip > /PATH/image.gz

恢复:

gzip -dc /PATH/image.gz | dd of=/dev/hdX

修复硬盘

dd if=/dev/sda of=/dev/sda

当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数 据起死回生。并且这个过程是安全、高效的。

监视进程

根据磁盘大小,dd运行过程可能会耗时很长,如果想要在执行过程中查看进度,需要使用pv工具。

首先安装pv工具

#Ubuntu/debian
sudo apt install pv
#CentOS
sudo yum install pv

然后运行dd命令,效果如下

dd if=/PATH/disk.img | pv | dd of=/dev/sdX
4,14MB 0:00:05 [ 98kB/s] [      <=>              ]

如果你使用的是GNU版本的dd,并且coreutils版本高于8.24,那么可以使用status选项。例如:

dd if=/dev/sdX of=/PATH/disk.img status=progress

dd常用参数

if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置obs和obs)。
cbs = bytes 一次转换bytes字节。
count = blocks 只拷贝输入的blocks块。
conv = ASCII 把EBCDIC码转换为ASCII码。
conv = ebcdic 把ASCII码转换为EBCDIC码。
conv = ibm 把ASCII码转换为alternate EBCDIC码。
conv = blick 把变动位转换成固定字符。
conv = ublock 把固定们转换成变动位
conv = ucase 把字母由小写变为大写。
conv = lcase 把字母由大写变为小写。
conv = notrunc 不截短输出文件。
conv = swab 交换每一对输入字节。
conv = noerror 出错时不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用ibs填充)。
fdformat命令 低级格式化软盘。

 

Leave a Comment