dd(英文全拼:disk dump)命令主要功能是用于读取、转化文件并输出数据。它可以从标准输入或指定文件中读取数据,根据指定的格式和条件来转换数据,再输出到指定文件或设备中。
语法:dd [参数]
参数说明:
if=文件名:输入文件名,默认为标准输入。即指定源文件
of=文件名:输出文件名,默认为标准输出。即指定目的文件
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=<关键字>,关键字可以有以下11种:
conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swap:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
--help:显示帮助信息
--version:显示版本信息
[root@CentOS7 ~]# dd if=/dev/zero of=file.txt count=1 bs=2M记录了1+0 的读入记录了1+0 的写出2097152字节(2.1 MB)已复制,0.00571481 秒,367 MB/秒[root@CentOS7 ~]# ls -lrth file.txt-rw-r--r-- 1 root root 2.0M 4月 12 20:06 file.txt
生成了一个2M的文件,如果想生成更大的,把bs后面的数值替换成你想要的大小数值即可,记得加上单位。
2、复制指定文件,并将其小写字母转换成大写字母
[root@CentOS7 ~]# dd if=/root/file1.txt of=file2.txt conv=ucase记录了0+1 的读入记录了0+1 的写出44字节(44 B)已复制,0.000256761 秒,171 kB/秒[root@CentOS7 ~]# cat file1.txtThis is a test file.Linux testHELLO LINUX[root@CentOS7 ~]# cat file2.txtTHIS IS A TEST FILE.LINUX TESTHELLO LINUX
[root@CentOS7 ~]# dd if=/root/file1.txt of=file3.txt count=1 bs=10记录了1+0 的读入记录了1+0 的写出10字节(10 B)已复制,0.000290701 秒,34.4 kB/秒
[root@CentOS7 ~]# dd conv=ucasethis is a test file.THIS IS A TEST FILE.记录了0+1 的读入记录了0+1 的写出21字节(21 B)已复制,12.1338 秒,0.0 kB/秒
输入以上命令后按回车键,再输入字符串,再按回车键,按组合键Ctrl+D 退出即可。
[root@CentOS7 ~]# dd if=ubuntu.iso of=/dev/sdc bs=4M
注:of=/dev/sdc是指制作启动盘的目标设备,并不是指本机上的硬盘,这里的sdc会根据主机的磁盘个数会发生变化,以实际为准。
警告
目标设备 (of=) 会无条件覆盖:dd 不会询问“是否确认”,一旦执行,数据立刻被覆盖,很难恢复。
源与目标混淆:弄反 if 和 of 会导致目标数据被源覆盖,可能清空源数据。
设备名确认:务必确认设备名(如 /dev/sda, /dev/sdb)是否正确。一个字母之差,就可能把系统盘或存有重要数据的硬盘清空。
执行前检查:在按回车之前,建议先不加 of 参数,或使用 lsblk、fdisk -l 等命令仔细核对设备路径。
喜欢古诗词的同学们,欢迎移步「纸间有糖」,愿这里的文字甜到你心里。