磁盘管理 -- 对拷 dd 命令
dd 命令简介
dd -- 转换和复制文件
复制文件(指定大小) , 根据操作数进行转换和格式化;
参数:
if=FILE // 从 FILE 文件中读取; 即指定源文件; 如果不指定if 默认从 stdin 读取; of=FILE // 写入到 FILE 文件; 即指定目标文件, 如果不指定of 默认输出到 stdout; iflag=FLAGS // 设置读入的标志, 这些标志参数控制 dd 如何读入数据; ( 按照逗号分割的符号列表读取 ); oflag=FLAGS // 设置输出的标志, 控制 dd 如何输出数据; ( 按照逗号分割的符号列表编写 ); bs=BYTES // 读取和写入的块大小字节数, < 相当于设置 ibs 和 obs >; cbs=BYTES // 每次转换的字节数, 即指定转换缓冲区的大小; conv=CONVS // 使用指定参数转换文件; count=N // 只拷贝 N 个输入块(ibs 设置的字节数); ibs=BYTES // 每次读取的字节数 ( 默认 512 ); obs=BYTES // 每次写入的字节数 ( 默认 512 ); seek=BLOCKS // 输出到 output 文件时, 跳过 obs 大小的块; 即跳过n个block, 从 n+1 个开始写入; skip=BLOCKS // 输入时, 跳过 ibs 大小的块; 即跳过 n 个block, 从 n+1 个开始读取; status=WHICH // 指哪些信息要抑制输出到stderr; 'noxfer'--抑制传输统计, 'none' -- 抑制所有;
示例
// 整个磁盘备份 dd if=/dev/sdb of=/dev/sdc // 分区进行备份; 挂载 /dev/sdb2 进行查看 dd if=/dev/sda1 of=/dev/sdb2 mount /dev/sdb2 /tian ls /tian config-2.6.32-431.el6.x86_64 lost+found efi symvers-2.6.32-431.el6.x86_64.gz grub System.map-2.6.32-431.el6.x86_64 initramfs-2.6.32-431.el6.x86_64.img vmlinuz-2.6.32-431.el6.x86_64 // 将 /dev/sda 全盘数据备份到指定路径的指定文件, 文件名可以自定义,不用提前创建文件; dd if=/dev/sda of=/back/backup // 将备份文件恢复到指定的盘; dd if=/back/backup of=/dev/sdb // 备份全盘数据, 并使用 gzip 工具压缩后保存到指定目录; dd if=/dev/sda | gzip > /back/backup.zip // 将压缩的备份文件恢复到指定磁盘 gzip -dc /back/backup.gz |dd of=/dev/sdb // 备份 MBR ( 磁盘的前 512 个字节 ) dd if=/dev/sda of=/back/mbr_back count=1 bs=512 // 恢复 MBR dd if=/back/mbr_back of=/dev/sdb // 测试写的速度 dd if=/dev/zero bs=1024 count=1000000 of=/back/file // 测试读的速度 dd if=/back/file bs=64k | dd of=/dev/null // 可以通过 写的速度, 使用不同块大小测出不同的速度, 确定系统最佳的块大小 dd if=/dev/zero bs=1024 count=1000000 of=/back/file dd if=/dev/zero bs=2048 count=500000 of=/back/file ... ...