dd命令
dd :convert and copy a file
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:block size, 复制单元大小
count=# :复制多少个bs
of=file 写到所命名的文件而不是到标准输出
if=file 从所命名文件读取而不是从标准输入
bs=size 指定块大小(既是是ibs 也是obs)
ibs=size 一次读size 个byte
obs=size 一次写size 个byte
cbs=size 一次转化size 个byte
skip=blocks 从开头忽略blocks 个ibs 大小的块
seek=blocks 从开头忽略blocks 个obs 大小的块
count=n 只拷贝n个记录
conv=conversion[,conversion...] 用指定的参数转换文件
转换参数:
ascii 转换EBCDIC为ASCII
ebcdic 转换ASCII为EBCDIC
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
nocreat 不创建输出文件
noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充到ibs 个字节,不足部分用空(NUL)字 字符补齐
- dd命令有很多应用场景比如:
备份MBR
dd if=/dev/sda of=/app/MBR bs=1 count=512
破坏MBR的bootloader
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
备份数据
dd if=/dev/sda of=/app/sda.bak 将sda磁盘上的数据备份到/app/sda.bak文件
dd if=/dev/sda | gzip >/app/sda.gz 备份/dev/sda全盘数据,并利用gzip 压缩,保存到/app/sda.gz文件
恢复数据
dd if=/dev/app/sda.bak of=/dev/sdb 将sda备份文件sda.bak恢复到/dev/sdb磁盘
gzip -dc /app/sda.gz | dd of=/dev/sdb 将压缩的sda.gz文件恢复到/dev/sdb设备
拷贝内存数据到磁盘
dd if=/dev/mem of=/app/men.bak bs=1024 将内存中的数据拷贝到/app/mem.bak文件中,以一块1M的单位读取和写入
销毁磁盘数据
dd if=/dev/urandom of=/dev/sdb1 使用urandom产生的随机数填充覆盖磁盘原数据,即为销毁磁盘数据,执行操作之后,/dev/sdb1将被破坏无法挂载及创建和拷贝等操作都将无法使用
测试硬盘写速度
dd if=/dev/zero of=/app/f1 bs=1M count=10000
测试硬盘读速度
dd if=/app/f1 bs=64k | dd of=/dev/null
修复硬盘
dd=if=/dev/sda of=/dev/sda
拷贝iso镜像
dd if=/dev/sr0 of=centos6.iso
cp /dev/sr0 centos6.iso 拷贝光盘数据到centos6.iso文件
制作iso镜像
mkisofs -r -o centos.iso /app/centos6 将/app/centos6目录打包为iso文件
设置系统启动盘
dd if=/dev/sr0 of=/dev/sdd /dev/sdd为外接硬盘设备,可做系统启动盘