同硬盘和分区打交道时,我们可能需要创建所有分区的副本或备份,而不仅仅是复制内容(不仅是各个硬盘分区,而且包括引导记录、分区表等信息)。这时,我们就可以使用dd命令,它可能用于克隆任何类型的磁盘,如硬盘、闪存、CD、DVD以及软盘等。
dd命令介绍
dd命令的愿意是Data Definiton。由于不正确的使用会导致数据丢失,因此它获得了Data Destroyer这一谑称。使用dd命令时,要留意参数的顺序。错误的参数会损毁全部数据。dd基本上算是一个比特流复制器 (bitstream duplicator),它可以将来自磁盘的比特流写入文件,也可以将来自文件的比特流写入磁盘。
那么,我们一起来看看dd命令的用法吧。
ps:更多 linux命令学习,请访问 脚本学堂 中的 系统管理 -> Linux命令 部分,收集了很多实用的命令与实例。
dd的语法如下:
$ dd if=SOURCE of=TARGET bs=BLOCK_SIZE count=COUNT
其中:
1)、if代表输入文件或输入设备路径;
2)、of代表目标文件或目标设备路径;
3)、bs代表块大小(通常以2的幂数形式给出,如512、1024、2048等)。COUNT是需要复制的块数(整数)。
需要复制的字节总数 = 块大小 * COUNT
bs和count都是可选的。
通过指定COUNT,我们可以限制从输入文件复制到目标的字节数。如果不指定COUNT,dd会对输入文件进行复制,直到遇见文件结束标志(EOF)为止。
要将一个分区复制到文件中,可以使用:
该命令中的/dev/sda1是该分区的设备路径。
用备份恢复分区:
如果要永久性删除一个分区中的所有数据,我们可以用dd向该分区中写入0值,命令如下:
在容量相同的硬盘间进行克隆:
其中,/dev/sdb是第二个硬盘。
要制作CD ROM的镜像(ISO文件),方法如下:
补充:
如果将文件系统建立在一个由dd生成的文件中,那么我们可以将它挂载到挂载点上。
下面我们一起来看看其使用方法。
挂载镜像文件
用环回(loopback)的方法可以将任何由dd生成的文件镜像进行挂载,这是用mount命令的-o loop来实现的。
这样,我们就可以通过/mnt/mount_point来访问镜像文件中的内容了。
dd命令介绍
dd命令的愿意是Data Definiton。由于不正确的使用会导致数据丢失,因此它获得了Data Destroyer这一谑称。使用dd命令时,要留意参数的顺序。错误的参数会损毁全部数据。dd基本上算是一个比特流复制器 (bitstream duplicator),它可以将来自磁盘的比特流写入文件,也可以将来自文件的比特流写入磁盘。
那么,我们一起来看看dd命令的用法吧。
ps:更多 linux命令学习,请访问 脚本学堂 中的 系统管理 -> Linux命令 部分,收集了很多实用的命令与实例。
dd的语法如下:
$ dd if=SOURCE of=TARGET bs=BLOCK_SIZE count=COUNT
其中:
1)、if代表输入文件或输入设备路径;
2)、of代表目标文件或目标设备路径;
3)、bs代表块大小(通常以2的幂数形式给出,如512、1024、2048等)。COUNT是需要复制的块数(整数)。
需要复制的字节总数 = 块大小 * COUNT
bs和count都是可选的。
通过指定COUNT,我们可以限制从输入文件复制到目标的字节数。如果不指定COUNT,dd会对输入文件进行复制,直到遇见文件结束标志(EOF)为止。
要将一个分区复制到文件中,可以使用:
# dd if=/dev/sda1 of=sda1_partition.img
该命令中的/dev/sda1是该分区的设备路径。
用备份恢复分区:
# dd if=sda1_partition.img of=/dev/sda1
要留心if和of参数。错误使用会造成数据丢失。
如果要永久性删除一个分区中的所有数据,我们可以用dd向该分区中写入0值,命令如下:
# dd if=/dev/zero of=/dev/sda1
/dev/zero是一个字符设备。它总是返回字符 '\0'。
在容量相同的硬盘间进行克隆:
# dd if=/dev/sda of=/dev/sdb
其中,/dev/sdb是第二个硬盘。
要制作CD ROM的镜像(ISO文件),方法如下:
# dd if=/dve/cdrom of=cdrom.iso
补充:
如果将文件系统建立在一个由dd生成的文件中,那么我们可以将它挂载到挂载点上。
下面我们一起来看看其使用方法。
挂载镜像文件
用环回(loopback)的方法可以将任何由dd生成的文件镜像进行挂载,这是用mount命令的-o loop来实现的。
# mkdir /mnt/mount_point
# mount -o loop file.img /mnt/mount_point
这样,我们就可以通过/mnt/mount_point来访问镜像文件中的内容了。