加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

dd指令 进行物理拷盘

(2009-10-29 00:36:57)
标签:

dd

if

of

bs

count

硬盘对拷

一次一track

mbr拷贝

磁带拷贝

杂谈

分类: unix应用
    dd命令 的实质——在Linux下所有的硬件都表示为文件,所以dd可以进行任何复制、克隆磁盘(文件),磁带(文件),或映像文件


   为什么说dd是最保险最准确的复制?
  • dd的复制是完全基于二进制的物理复制,从硬盘的第一个字节道最后一个字节,完全一样的克隆了一遍。
  • 无论dd所基于的系统是否认识,都可以原原本本的复制。
例如linux下用dd复制FreeBSD分区、其他操作系统的分区,甚至加密扇区什么的。


    dd指令格式
dd  if =  of =  bs=
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
bs = bytes 同时设置读/写缓冲区的字节数
dd复制硬盘
dd   if=/dev/sda   of=/dev/sd2     bs=1024K



  用dd平滑备份(复制)两块硬盘的操作:
  •     最好两块硬盘是同一容量和同一型号
  •     连接好新硬盘,开机(复制硬盘最好在单用户下做)
  •     fdisk  -l 指令查设备号
 fdisk -l出来的结果是sda(旧) sdb(新)
  •     复制
dd if=/dev/sda of=/dev/sdb
  •     等待,漫长的等待
     因为没设bs,而缺省是1024,值太小,所以很慢
  •     关机,将两个硬盘的接口更换一下。
  •     重起,用新硬盘启动


    参数bs的设置问题:bs设置的大小直接影响读取写入的速度
dd if=/dev/sda of=dev/sdb bs=4096
复制硬盘发现可是一个73G的硬盘做了好几个小时还没完
建议改成:
dd if=/dev/sda of=dev/sdb bs=1024k
主要: bs单位是字节,但允许加k这个单位
上面的设置还是太慢了
IDE硬盘,可以设置bs=20000k或30000k
scsi硬盘设置到50000k
还可以再设得再大些。

    实验:复制一个4G硬盘,上装minilinux(大约1.5G),bs=4096k,20分钟完成
fdisk -l 看两个硬盘的盘符(注意不要看带数字的,那是分区,不是整个硬盘,如hda1,hda2等,要看无数字的,hda,sda,hdb,sdb)
dd if=/dev/hda of=/dev/hdc bs=4096k
20分钟完成


   标准克隆(一次一track) bs=32256
dd if=/dev/hda of=/dev/sdb bs=32256 conv=notrunc,noerror
bs=32256表示一次复制一个轨道,一个轨道共有63个扇区,每扇区512个字节,512x63=32256
conv=notrunc表示不要跳过空闲处
noerror表示忽略警告


    不同大小的分区之间克隆,会是什么样的情况?
答案是:如果80G的硬盘(假设只有一个分区)克隆到250G的分区,250G的分区会变成80G,剩余的空间未分配。
这个时候就需要用分区工具来Resize分区。


   使用dd命令把本机硬盘8G的东西倒到另有一块硬盘/temp目录下面的systemos.img成一个文件
dd if=/dev/sda of=/temp/systeoms.img bs=1k
    使用dd命令把systemos.img倒入到这台机器
dd if=/temp1/systemos.img of=/dev/sda bs=1k


    最简单的dd指令应用,软盘对拷
dd if=/dev/fd0 of=/tmp/dcopy.tmp   内容拷出到硬盘
dd if=/tmp/dcopy.tmp of=/dev/fd0 再将内容拷入新盘

    磁带COPY也类似
dd if=/dev/mt/0 of=/tmp/dcopy.tmp   内容拷出到硬盘
dd if=/tmp/dcopy.tmp of=/dev/mt/0 再将内容拷入新盘


   用dd做iso
dd if=/dev/cdrom of=/tmp/aaa.iso


    dd参数count 的作用
dd if= of= count=blocks
只dd 用count指定的的blocks块(No.)
dd if=/dev/hda of=/dev/hdb bs=512 count=1
复制硬盘hda的MBR到hdb

 
   dd用来彻底擦除数据
dd if=/dev/zero of=/dev/sda conv=notrunc




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有