1、功能:
dd命令是Linux系统中一个功能强大的工具,主要用于复制和转换文件或设备数据,它可以在底层进行数据处理,实现对磁盘、分区等的读写操作,常用于数据备份、恢复、磁盘克隆以及文件格式转换等场景。
2、名称由来:
其名称可能源于IBM的Job Control Language中的“Data Definition”,但在Linux中通常被解释为“Data Duplicator”或“Disk Dump”。
1、基本语法:
dd [选项] if=输入文件 of=输出文件
“if=”指定输入文件,默认为标准输入;“of=”指定输出文件,默认为标准输出。
2、常用参数:
if:指定输入文件,如dd if=input.img
。
of:指定输出文件,如dd of=output.img
。
bs:设置每次读写的字节数,即块大小,如dd bs=1M
表示每次读写1MB的数据。
count:设置要复制的块数,如dd count=10
表示只复制10个块的数据。
skip:在读取输入文件之前跳过的块数,如dd skip=1
表示从输入文件开头跳过1个块后再开始复制。
seek:在写入输出文件之前跳过的块数,如dd seek=1
表示从输出文件开头跳过1个块后再开始写入。
conv:指定数据转换方式,常见的转换选项有:
notrunc:不截断输出文件。
noerror:遇到读取错误时继续。
sync:使用零填充不足的块。
swab:交换每对字节。
ascii:转换为ASCII。
ebcdic:转换为EBCDIC。
ibm:转换为IBM EBCDIC。
lcase:转换为小写。
ucase:转换为大写。
block:转换为块格式。
unblock:转换为非块格式。
1、备份和恢复磁盘或分区:
备份整个磁盘到镜像文件:sudo dd if=/dev/sda of=backup.img bs=4M
。
恢复磁盘镜像文件到磁盘:sudo dd if=backup.img of=/dev/sda bs=4M
。
2、创建启动盘:将ISO文件写入USB驱动器,例如将ubuntu-20.04.iso写入/dev/sdb,块大小为4M:sudo dd if=ubuntu-20.04.iso of=/dev/sdb bs=4M
。
3、创建空文件:创建一个1GB的空文件emptyfile:dd if=/dev/zero of=emptyfile bs=1G count=1
。
4、克隆磁盘:将磁盘/dev/sda克隆到磁盘/dev/sdb,块大小为4M:sudo dd if=/dev/sda of=/dev/sdb bs=4M
。
5、擦除磁盘:使用随机数据擦除磁盘/dev/sda,块大小为4M:sudo dd if=/dev/urandom of=/dev/sda bs=4M
。
6、转换文件格式:将EBCDIC文件input.ebcdic转换为ASCII文件output.ascii:dd if=input.ebcdic of=output.ascii conv=ascii
。
7、复制并压缩文件:复制文件inputfile并使用gzip压缩,输出为outputfile.gz:dd if=inputfile | gzip > outputfile.gz
。
8、检查磁盘读取速度:测试磁盘/dev/sda的读取速度,块大小为4M:dd if=/dev/sda of=/dev/null bs=4M
。
9、检查磁盘写入速度:测试磁盘的写入速度,创建一个4GB的文件testfile,块大小为4M:dd if=/dev/zero of=testfile bs=4M count=1024
。
10、测试硬盘性能:向硬盘写入4G大小的内容,测试硬盘读写性能,oflag=direct不经过内存,直接写入硬盘:dd if=/dev/zero of=/data/testfile bs=1M count=4096 oflag=direct
。
1、dd命令非常强大但也很危险,特别是涉及到磁盘和分区操作时,错误的命令可能会导致数据丢失,因此在执行任何操作之前,务必确认设备名称正确无误,并备份重要数据。
2、合理设置块大小可以提高dd命令的性能,通常情况下,较大的块大小可以提高读写速度。
3、对于涉及磁盘和分区的操作,通常需要超级用户权限,使用sudo可以确保命令具有足够的权限。
1、Q:如何备份和恢复磁盘或分区?
A:备份磁盘可以使用sudo dd if=/dev/sda of=backup.img bs=4M
命令;恢复磁盘则使用sudo dd if=backup.img of=/dev/sda bs=4M
命令。
2、Q:如何创建一个指定大小的空文件?
A:可以使用dd if=/dev/zero of=emptyfile bs=1G count=1
命令创建一个1GB的空文件。