dd不关心文件系统,只是简单的在块层面拷贝数据

基础

count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。 ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。 obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。 bs=bytes:同时设置读入/输出的块大小为bytes个字节。

*可进入livecd,备份任意系统、磁盘。fdisk命令能够识别任意系统下的分区格式。dd不关心磁盘的文件系统格式,只是简单地按照要求从指定的位置,复制多少字节数据。 备份磁盘开始的512个字节大小的MBR信息到指定文件 dd if=/dev/hda of=/root/image count=1 bs=512

备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径 dd if=/dev/hdb | gzip > /root/image.gz

将压缩的备份文件恢复到指定盘 gzip -dc /root/image.gz | dd of=/dev/hdb

销毁磁盘数据 dd if=/dev/urandom of=/dev/hda1

修复硬盘 (读出硬盘上的数据,然后回写,读写过程都有校验,可以修复一部分校验错误的数据) dd if=/dev/sda of=/dev/sda

dd命令做usb启动盘 (用以上命令前必须卸载u盘,sdb是你的u盘,bs=1M是块的大小,后面的数值大,写的速度相对块一点,但也不是无限的,我一般选2M,注意,执行命令后很块完成,但u盘还在闪,等不闪了,安全移除) dd if=xxx.iso of=/dev/sdb bs=1M

使用dd命令扩容文件 dd if=/dev/zero of=new.img bs=xx count=xx 使用cat命令把新建的空间写到之前存在的img后面 cat new.img >> old.img


高级用法

buffer(写,缓冲) 用于内存和硬盘(或其他 I/O设备)之间的数据交换的速度而设计的 cache(读,缓存) 使用内存来缓存可能被再次访问的数据。Cache 经常被使用在I/O 请求上


CONV参数

fdatasync 数据先写入系统缓冲(buffer),统一写入磁盘 fsync 同上,同时写元数据

FLAG参数

iflag 读 oflag 写 direct 绕开系统缓冲,不按每count,直接写入磁盘(磁盘也有缓冲) dsync 不绕开系统缓冲,数据按每count写入磁盘后,再进行下一次写入 sync 同上,同时写元数据