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
同上,同时写元数据