dd命令的使用
- 格式:docx
- 大小:25.86 KB
- 文档页数:3
一、dd命令dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2参数注释:if=文件名:输入文件名,缺省为标准输入。
即指定源文件。
< if=input file > of=文件名:输出文件名,缺省为标准输出。
即指定目的文件。
< of=output file >ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为asciiebcdic:转换ascii为ebcdicibm:转换ascii为alternate ebcdicblock:把每一行转换为长度为cbs,不足部分用空格填充unblock:使每一行的长度都为cbs,不足部分用空格填充lcase:把大写字符转换为小写字符ucase:把小写字符转换为大写字符swab:交换输入的每对字节noerror:出错时不停止notrunc:不截短输出文件sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
二、dd应用实例1.将本地的/dev/hdb整盘备份到/dev/hddheng@me: dd if=/dev/hdb of=/dev/hdd• 1 2.将/dev/hdb全盘数据备份到指定路径的image文件heng@me: dd if=/dev/hdb of=/root/image• 1 3.将备份文件恢复到指定盘heng@me: dd if=/root/image of=/dev/hdb• 1 4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径heng@me: dd if=/dev/hdb | gzip > /root/image.gz• 15.将压缩的备份文件恢复到指定盘heng@me: gzip -dc /root/image.gz | dd of=/dev/hdb• 1 6.备份与恢复MBR备份磁盘开始的512个字节大小的MBR信息到指定文件:heng@me: dd if=/dev/hda of=/root/image count=1 bs=512• 1 count=1指仅拷贝一个块;bs=512指块大小为512个字节。
dd命令原理一、概述dd命令是Linux系统中一个非常重要的命令,它的主要作用是进行数据的复制和转换。
dd命令可以从一个文件或设备中读取数据,并将其写入到另一个文件或设备中去。
它可以用于创建镜像文件、备份数据、进行磁盘扇区级别的操作等。
本文将详细介绍dd命令的原理和使用方法。
二、命令格式dd命令的基本格式如下:dd if=<输入文件> of=<输出文件> bs=<块大小> count=<块数>其中,if表示输入文件或设备,of表示输出文件或设备,bs表示块大小,count表示要复制的块数。
三、命令原理dd命令的原理非常简单,它通过系统调用read()和write()来实现数据的读取和写入。
当执行dd命令时,它会首先根据输入文件的路径打开输入文件,并根据输出文件的路径打开输出文件。
然后,它会从输入文件中读取指定大小的数据块,并将其写入到输出文件中去。
当读取和写入的数据块数达到指定的块数时,dd命令就会停止执行。
四、常用参数1. if参数:指定输入文件或设备的路径。
输入文件可以是普通文件、设备文件或命名管道。
2. of参数:指定输出文件或设备的路径。
输出文件可以是普通文件、设备文件或命名管道。
3. bs参数:指定每次读取和写入的数据块大小。
块大小可以是字节、KB、MB等单位,默认为512字节。
4. count参数:指定要复制的数据块数。
如果不指定count参数,则会一直复制到输入文件的末尾。
5. seek参数:指定输出文件的起始位置。
如果输出文件已存在且长度大于复制数据的大小,可以使用seek参数进行偏移。
6. skip参数:指定输入文件的起始位置。
可以使用skip参数跳过输入文件的前几个数据块。
五、使用示例1. 复制文件:dd if=/path/to/input_file of=/path/to/output_file bs=1024 count=10该命令将会从输入文件中读取10个块大小的数据,并将其写入到输出文件中去。
linux dd 用法-回复Linux dd命令用法Linux中的dd命令是一个非常强大的工具,可用于复制和转换文件。
它可以执行诸如创建磁盘映像、备份和恢复分区、克隆硬盘等任务。
本文将详细介绍dd命令的用法和各个参数的作用,帮助您更好地了解和使用dd命令。
一、dd命令的基本用法dd命令的基本语法为:dd if=input_file of=output_file bs=block_sizecount=block_count1. if参数:表示输入文件(input file),可以是文件、设备或者管道。
2. of参数:表示输出文件(output file),可以是文件、设备或者管道。
3. bs参数:表示块大小(block size),用于指定每一次的读取和写入操作中使用的字节数。
4. count参数:表示读取或写入的块数(block count),根据bs参数来决定。
示例:假设我们要将一个名为input.txt的文件复制到名为output.txt的文件中,可以使用以下命令:dd if=input.txt of=output.txt二、dd命令的其他常用参数除了基本的用法外,dd命令还具有一些常用的参数,可以根据需要进行配置。
1. ibs和obs参数:分别表示输入块大小(input block size)和输出块大小(output block size)。
可以在不同的硬件之间实现数据传输的速度匹配。
如果不指定这两个参数,则默认使用bs的值。
示例:dd if=input.txt of=output.txt bs=1024 ibs=512 obs=40962. conv参数:用于指定对输入数据进行转换的方式。
- conv=notrunc:不截断输出文件。
如果输出文件已经存在,则保留其中的数据不改变。
- conv=noerror:忽略输入/输出中出现的错误。
- conv=sync:将输入的每个块刷写到输入设备,使得输入和输出完全对齐。
dd命令详解⼀、dd命令的解释。
dd:⽤指定⼤⼩的块拷贝⼀个⽂件,并在拷贝的同时进⾏指定的转换。
注意:指定数字的地⽅若以下列字符结尾则乘以相应的数字:b=512;c=1;k=1024;w=2参数:1. if=⽂件名:输⼊⽂件名,缺省为标准输⼊。
即指定源⽂件。
< if=input file >2. of=⽂件名:输出⽂件名,缺省为标准输出。
即指定⽬的⽂件。
< of=output file >3. ibs=bytes:⼀次读⼊bytes个字节,即指定⼀个块⼤⼩为bytes个字节。
obs=bytes:⼀次输出bytes个字节,即指定⼀个块⼤⼩为bytes个字节。
bs=bytes:同时设置读⼊/输出的块⼤⼩为bytes个字节。
4. cbs=bytes:⼀次转换bytes个字节,即指定转换缓冲区⼤⼩。
5. skip=blocks:从输⼊⽂件开头跳过blocks个块后再开始复制。
6. seek=blocks:从输出⽂件开头跳过blocks个块后再开始复制。
注意:通常只⽤当输出⽂件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
7. count=blocks:仅拷贝blocks个块,块⼤⼩等于ibs指定的字节数。
8. conv=conversion:⽤指定的参数转换⽂件。
ascii:转换ebcdic为asciiebcdic:转换ascii为ebcdicibm:转换ascii为alternate ebcdicblock:把每⼀⾏转换为长度为cbs,不⾜部分⽤空格填充unblock:使每⼀⾏的长度都为cbs,不⾜部分⽤空格填充lcase:把⼤写字符转换为⼩写字符ucase:把⼩写字符转换为⼤写字符swab:交换输⼊的每对字节noerror:出错时不停⽌notrunc:不截短输出⽂件sync:将每个输⼊块填充到ibs个字节,不⾜部分⽤空(NUL)字符补齐。
⼆、dd应⽤实例。
1.将本地的/dev/hdb整盘备份到/dev/hdddd if=/dev/hdb of=/dev/hdd2.将/dev/hdb全盘数据备份到指定路径的image⽂件dd if=/dev/hdb of=/root/image3.将备份⽂件恢复到指定盘dd if=/root/image of=/dev/hdb4.备份/dev/hdb全盘数据,并利⽤gzip⼯具进⾏压缩,保存到指定路径dd if=/dev/hdb | gzip > /root/image.gz5.将压缩的备份⽂件恢复到指定盘gzip -dc /root/image.gz | dd of=/dev/hdb6.备份磁盘开始的512个字节⼤⼩的MBR信息到指定⽂件dd if=/dev/hda of=/root/image count=1 bs=512count=1指仅拷贝⼀个块;bs=512指块⼤⼩为512个字节。
Linux命令高级技巧使用dd命令进行磁盘镜像和备份Linux系统作为一种开源操作系统,具有强大的灵活性和可定制性,而dd命令则是其中一个非常强大且常用的命令。
dd命令可以进行磁盘镜像和备份,其灵活性使得它成为Linux系统管理员和维护人员的必备技能之一。
在本文中,我将为您介绍如何使用dd命令进行磁盘镜像和备份的高级技巧。
一、磁盘镜像磁盘镜像是将一个磁盘的完整内容复制到另一个磁盘或者文件中的过程。
它可以用于备份系统和数据,以及快速部署相同配置的多台机器。
使用dd命令进行磁盘镜像的基本语法为:dd if=输入文件 of=输出文件其中,if表示输入文件,可以是磁盘设备(如/dev/sda)或者文件(如/home/user/image.img),of表示输出文件,也可以是磁盘设备或者文件。
1. 镜像整个磁盘或分区要镜像整个磁盘或分区,您需要使用正确的输入文件和输出文件。
首先,您需要确定输入文件的路径,您可以使用lsblk命令查看系统中的磁盘和分区信息。
然后,使用以下命令进行镜像:dd if=/dev/sda of=/path/to/image.img此命令将/dev/sda设备的内容复制到/path/to/image.img文件中。
请确保输出文件的路径和文件名正确,并且有足够的存储空间。
2. 镜像单个文件系统有时候,您只需要镜像一个文件系统而不是整个磁盘。
为了做到这一点,您需要找到文件系统所在的分区,并使用相应的设备路径进行镜像。
例如,如果您想要镜像/dev/sda1分区,可以使用以下命令:dd if=/dev/sda1 of=/path/to/filesystem.img这将复制/dev/sda1分区的内容到/path/to/filesystem.img文件中。
确保输出文件的路径和文件名正确,并且有足够的存储空间。
3. 镜像文件系统的指定范围有时候,您可能只想镜像文件系统的某个指定范围,而不是整个文件系统。
在Linux中,可以使用dd命令来生成指定大小的文件。
dd命令非常强大,可以用于复制和转换文件。
以下是一个示例命令,用于生成一个100MB大小的文件:
bash复制代码dd if=/dev/zero of=output.dat bs=1M count=100
解释:
if=/dev/zero:输入文件为/dev/zero,这是一个特殊的文件,读取它会返回空字符(即零字节)。
of=output.dat:输出文件名为output.dat。
bs=1M:每次读取和写入的块大小为1MB。
count=100:总共读取100个块,即生成100MB的文件。
请注意,使用dd命令时要小心,因为它可以覆盖文件或设备。
确保您了解命令的作用,并在执行之前备份重要数据。
dd 用法"dd"是一个Linux和Unix系统中的命令行工具,用于复制和转换文件。
"dd"命令的基本语法如下:```dd if=<输入文件> of=<输出文件> bs=<块大小>```其中:- `if`参数指定输入文件的路径。
- `of`参数指定输出文件的路径。
- `bs`参数指定每个输入和输出块的大小。
下面是一些常用用法和拓展:1.复制文件:可以使用`dd`命令复制文件。
例如,要从一个文件复制内容到另一个文件,可以使用以下命令:```dd if=<输入文件> of=<输出文件>```这将复制输入文件的内容到输出文件。
2.创建空白文件:使用`dd`命令可以创建指定大小的空白文件。
以下命令将创建一个大小为1GB的空白文件:```dd if=/dev/zero of=<输出文件> bs=1G count=1```这将使用`/dev/zero`设备来填充文件内容。
3.磁盘镜像创建和恢复:使用`dd`命令可以创建磁盘镜像文件,并在需要时恢复到另一个磁盘。
以下命令可以创建完整磁盘镜像:```dd if=/dev/sda of=<输出文件>```这将从`/dev/sda`设备读取数据并将其写入输出文件。
类似地,可以使用以下命令将磁盘镜像恢复到另一个磁盘:```dd if=<输入文件> of=/dev/sda```4.数据清除: `dd`命令还可以用于清除磁盘上的数据,以防止其恢复。
以下命令会用随机数据填充磁盘:```dd if=/dev/random of=/dev/sda```这将使用`/dev/random`设备生成的随机数据覆盖磁盘的内容。
总结:dd命令是一个非常强大和灵活的命令行工具,可以执行许多复制和转换文件的操作。
它的用法和功能非常多样,可以根据需要进行不同的拓展。
Linux-dd命令详解dd 是 Linux/UNIX 下的⼀个⾮常有⽤的命令,作⽤是⽤指定⼤⼩的块拷贝⼀个⽂件,并在拷贝的同时进⾏指定的转换。
名称: dd使⽤权限: 所有使⽤者dd 这个指令在 manual ⾥的定义是 convert and copy a file使⽤⽅式:dd [option]如果你想要在线看 manual, 可以试试:dd –help或是info dd如果你想要看看这个版本如何:dd –version输⼊或输出dd if=[STDIN] of=[STDOUT]强迫输⼊或输出的Size为多少Bytesbs: dd -ibs=[BYTE] -obs=[SIZE]强迫⼀次只做多少个 Bytescbs=BYTES跳过⼀段以后才输出seek=BLOCKS跳过⼀段以后才输⼊skip=BLOCKS当然你可以拿这个来⽅便的拷贝光碟(注意,你的光碟是标准的 iso9660格式才可以这么做唷!)dd if=/dev/cdrom of=cdrom.iso其中 if 后⾯以及 of 后⾯的内容依你的需求调整。
然后给系统这个指令就可以烧了:cdrecord -v cdrom.iso这篇不是在讲 cdrecord 的,所以上⾯的指令是最为简单但是不⼀定能符合您的硬件环境…功能:把指定的输⼊⽂件拷贝到指定的输出⽂件中,并且在拷贝过程中可以进⾏格式转换。
可以⽤该命令实现DOS下的diskcopy命令的作⽤。
先⽤dd命令把软盘上的数据写成硬盘的⼀个寄存⽂件,再把这个寄存⽂件写⼊第⼆张软盘上,完成diskcopy的功能。
需要注意的是,应该将硬盘上的寄存⽂件⽤rm命令删除掉。
系统默认使⽤标准输⼊⽂件和标准输出⽂件。
语法:dd [选项]if =输⼊⽂件(或设备名称)。
of =输出⽂件(或设备名称)。
ibs = bytes ⼀次读取bytes字节,即读⼊缓冲区的字节数。
skip = blocks 跳过读⼊缓冲区开头的ibs*blocks块。
dd指令用法1.概述dd命令的实质——在Linux下所有的硬件都表示为文件,所以dd可以进行任何复制、克隆磁盘(文件),磁带(文件),或映像文件为什么说dd是最保险最准确的复制?dd的复制是完全基于二进制的物理复制,从硬盘的第一个字节道最后一个字节,完全一样的克隆了一遍。
无论dd所基于的系统是否认识,都可以原原本本的复制。
例如linux下用dd复制FreeBSD分区、其他操作系统的分区,甚至加密扇区什么的。
2.dd指令格式dd if=of=bs=if=输入文件(或设备名称)。
of=输出文件(或设备名称)。
bs=bytes同时设置读/写缓冲区的字节数dd复制硬盘dd if=/dev/sda of=/dev/sd2bs=1024K3.用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或30000kscsi硬盘设置到50000k还可以再设得再大些。
实验:复制一个4G硬盘,上装minilinux(大约1.5G),bs=4096k,20分钟完成fdisk-l看两个硬盘的盘符(注意不要看带数字的,那是分区,不是整个硬盘,如hda1,hda2等,要看无数字的,hda,sda,hdb,sdb)dd if=/dev/hda of=/dev/hdc bs=4096k20分钟完成4.标准克隆(一次一track)bs=32256dd if=/dev/hda of=/dev/sdb bs=32256conv=notrunc,noerrorbs=32256表示一次复制一个轨道,一个轨道共有63个扇区,每扇区512个字节,512x63=32256conv=notrunc表示不要跳过空闲处noerror表示忽略警告不同大小的分区之间克隆,会是什么样的情况?答案是:如果80G的硬盘(假设只有一个分区)克隆到250G的分区,250G的分区会变成80G,剩余的空间未分配。
linux创建虚拟磁盘的几种方式在Linux系统中,有几种方式可以创建虚拟磁盘。
下面我将从多个角度来介绍这些方法。
1. 使用dd命令:可以使用dd命令在Linux系统中创建虚拟磁盘。
通过dd命令可以从一个文件或设备中复制数据,并将其写入另一个文件或设备。
例如,可以使用以下命令创建一个1GB大小的虚拟磁盘文件:dd if=/dev/zero of=/path/to/virtual_disk bs=1M count=1024。
这将创建一个名为virtual_disk的1GB大小的虚拟磁盘文件。
2. 使用fallocate命令:fallocate命令可以用来在文件系统上预分配空间。
可以使用fallocate命令创建指定大小的虚拟磁盘文件。
例如,使用以下命令创建一个1GB大小的虚拟磁盘文件:fallocate -l 1G /path/to/virtual_disk.3. 使用truncate命令:truncate命令可以用来扩展或缩小文件的大小。
可以使用truncate命令创建指定大小的虚拟磁盘文件。
例如,使用以下命令创建一个1GB大小的虚拟磁盘文件:truncate -s 1G /path/to/virtual_disk.4. 使用qemu-img命令:如果你正在使用虚拟化技术(如QEMU/KVM),可以使用qemu-img命令创建虚拟磁盘。
例如,使用以下命令创建一个1GB大小的虚拟磁盘文件:qemu-img create -f qcow2 /path/to/virtual_disk.qcow2 1G.这些方法提供了在Linux系统中创建虚拟磁盘的几种选项,你可以根据自己的需求和偏好选择合适的方法来创建虚拟磁盘。
希望这些信息能够帮助到你。
dd命令使用
dd 是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝
的同时进行指定的转换。
1. 命令简介
dd 的主要选项:
指定数字的地方若以下列字符结尾乘以相应的数字:
b=512, c=1, k=1024, w=2, xm=number m
if=file
输入文件名,缺省为标准输入。
of=file
输出文件名,缺省为标准输出。
ibs=bytes
一次读入bytes 个字节(即一个块大小为bytes 个字节)。
obs=bytes
一次写bytes 个字节(即一个块大小为bytes 个字节)。
bs=bytes
同时设置读写块的大小为bytes ,可代替ibs 和obs 。
cbs=bytes
一次转换bytes 个字节,即转换缓冲区大小。
skip=blocks
从输入文件开头跳过blocks 个块后再开始复制。
seek=blocks
从输出文件开头跳过blocks 个块后再开始复制。
(通常只有当输出文件是磁盘或磁带时才有效)。
count=blocks
仅拷贝blocks 个块,块大小等于ibs 指定的字节数。
conv=conversion[,conversion...]
用指定的参数转换文件。
转换参数:
ascii 转换EBCDIC 为ASCII。
ebcdic 转换ASCII 为EBCDIC。
ibm 转换ASCII 为alternate EBCDIC.
block 把每一行转换为长度为cbs 的记录,不足部分用空格填充。
unblock 使每一行的长度都为cbs ,不足部分用空格填充。
lcase 把大写字符转换为小写字符。
ucase 把小写字符转换为大写字符。
swab 交换输入的每对字节。
noerror 出错时不停止。
notrunc 不截短输出文件。
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
2.实例分析
2.1.数据备份与恢复
2.1.1整盘数据备份与恢复
备份
将本地的/dev/hdx整盘备份到/dev/hdy :dd if=/dev/hdx of=/dev/hdy
将/dev/hdx全盘数据备份到指定路径的image文件:dd if=/dev/hdx
of=/path/to/image
备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径:dd if=/dev/hdx | gzip
>/path/to/image.gz
恢复
将备份文件恢复到指定盘:dd if=/path/to/image of=/dev/hdx
将压缩的备份文件恢复到指定盘:gzip -dc /path/to/image.gz | dd of=/dev/hdx 2.1.2.利用netcat远程备份
在源主机上执行此命令备份/dev/hda:dd if=/dev/hda bs=16065b | netcat < targethost-IP >
1234
在目的主机上执行此命令来接收数据并写入/dev/hdc:netcat -l -p 1234 | dd
of=/dev/hdc
bs=16065b
以下两条指令是目的主机指令的变化分别采用bzip2 gzip对数据进行压缩,并将备份文件保存在当
前目录:
netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
2.1.
3.备份MBR
备份:
备份磁盘开始的512Byte大小的MBR信息到指定文件:dd if=/dev/hdx
of=/path/to/image
count=1 bs=512
恢复:
将备份的MBR信息写到磁盘开始部分:dd if=/path/to/image of=/dev/hdx
2.1.4.备份软盘
将软驱数据备份到当前目录的disk.img文件:dd if=/dev/fd0 of=disk.img count=1 bs=1440k
2.1.5.拷贝内存资料到硬盘
将内存里的数据拷贝到root目录下的mem.bin文件:dd if=/dev/mem
of=/root/mem.bin
bs=1024
2.1.6.从光盘拷贝iso镜像
拷贝光盘数据到root文件夹下,并保存为cd.iso文件:dd if=/dev/cdrom
of=/root/cd.iso
2.2.增加Swap分区文件大小
创建一个足够大的文件(此处为256M):dd if=/dev/zero of=/swapfile bs=1024 count=262144
把这个文件变成swap文件:mkswap /swapfile
启用这个swap文件:swapon /swapfile
在每次开机的时候自动加载swap文件, 需要在/etc/fstab 文件中增加一行:
/swapfile swap
swap defaults 0 0
2.3.销毁磁盘数据
利用随机的数据填充硬盘:dd if=/dev/urandom of=/dev/hda1
在某些必要的场合可以用来销毁数据。
执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作
无法执行。
2.4磁盘管理
2.4.1.得到最恰当的block size
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小:dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
2.4.2测试硬盘读写速度
通过两个命令输出的执行时间,可以计算出测试硬盘的读/写速度:
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
hdd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
2.4.
3.修复硬盘
当硬盘较长时间(比如一两年年)放置不使用后,磁盘上会产生magnetic flux point。
当磁头读到
这些区域时会遇到困难,并可能导致I/O错误。
当这种情况影响到硬盘的第一个扇区时,可能导致
硬盘报废。
下面的命令有可能使这些数据起死回生。
且这个过程是安全,高效的。
dd if=/dev/sda of=/dev/sda。