今天群里问了一个用dd命令是否可以克隆Linux系统到另外一块新的硬盘上的问题,

    dd命令转换和复制文件,按照原理来看dd是按照磁盘结构进行复制,是可以把一块硬盘上的东西按照原有的结构复制到另外一块硬盘应该行.

        但是原理必须要靠实践才能说明,遂马上开始试验,在此之前还是介绍一下dd命令吧

      dd if=源 of=目标 bs=块的大小(字节) count=复制多少块

      上面应该是基本的格式

      但是还是从网上找一些详细的供大家参考:

 

 
  
  1. dd 的主要选项:  
  2.  
  3. 指定数字的地方若以下列字符结尾乘以相应的数字:  
  4.  
  5. b=512c=1k=1024w=2xm=number m  
  6.  
  7. if=file 
  8.  
  9. 输入文件名,缺省为标准输入。  
  10.  
  11. of=file 
  12.  
  13. 输出文件名,缺省为标准输出。  
  14.  
  15. ibs=bytes 
  16.  
  17. 一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。  
  18.  
  19. obs=bytes 
  20.  
  21. 一次写 bytes 个字节(即一个块大小为 bytes 个字节)。  
  22.  
  23. bs=bytes 
  24.  
  25. 同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。  
  26.  
  27. cbs=bytes 
  28.  
  29. 一次转换 bytes 个字节,即转换缓冲区大小。  
  30.  
  31. skip=blocks 
  32.  
  33. 从输入文件开头跳过 blocks 个块后再开始复制。  
  34.  
  35. seek=blocks 
  36.  
  37. 从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。  
  38.  
  39. count=blocks 
  40.  
  41. 仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。  
  42.  
  43. conv=conversion[,conversion...]  
  44.  
  45. 用指定的参数转换文件。  
  46.  
  47. 转换参数:  
  48.  
  49. ascii 转换 EBCDIC 为 ASCII。  
  50.  
  51. ebcdic 转换 ASCII 为 EBCDIC。  
  52.  
  53. ibm 转换 ASCII 为 alternate EBCDIC.  
  54.  
  55. block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。  
  56.  
  57. unblock 使每一行的长度都为 cbs ,不足部分用空格填充。  
  58.  
  59. lcase 把大写字符转换为小写字符。  
  60.  
  61. ucase 把小写字符转换为大写字符。  
  62.  
  63. swab 交换输入的每对字节。  
  64.  
  65. noerror 出错时不停止。  
  66.  
  67. notrunc 不截短输出文件。  
  68.  
  69. sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。  
  70.  

    由于没有硬件的支持,所以只能用虚拟机了.

    现有的虚拟机加上一块硬盘,进入系统后执行dd命令:

    dd if=/dev/sda of=/dev/sdb

    然后等待完成.

    新建虚拟机,把虚拟机的硬盘删掉(注:新虚拟机的硬盘),然后Edit virtual machine settings -> add -> Hard Disk->Use an existing virtual disk
   然后指定刚才在另外一个虚拟机中新建的那个硬盘的位置应该是在另外一个虚拟机所在的磁盘目录下的 虚拟机名字-数字.vmdk (我的虚拟机名字是CentOS5.5这个虚拟硬盘是我建立的第4个硬盘  所以名字是CentOS5.5-4.vmdk)
  然后启动虚拟机...  真的启动了..

   dd命令果然强大