dd-文件系统内容映射
阅读原文时间:2023年07月09日阅读:3

复制文件并对原文件的内容进行转换和格式化处理。

语法

dd [OPTIONS]...

选项

if=filename     指定源文件。
of=filename     指定目的文件。
ibs=bytes       指定一个块大小为bytes个字节。
obs=bytes       指定一个块大小为bytes个字节。
bs=bytes        同时设置读入/输出的块大小为bytes个字节。
cbs=bytes       指定转换缓冲区大小。
skip=blocks     从输入文件开头跳过blocks个块后再开始复制。
seek=blocks     从输出文件开头跳过blocks个块后再开始复制。
count=blocks    仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=<keyword>  关键字可以有以下11种:
                 conversion  用指定的参数转换文件。
                 ascii       转换ebcdic为ascii。
                 ebcdic      转换ascii为ebcdic。
                 ibm         转换ascii为alternate ebcdic。
                 block       把每一行转换为长度为cbs。
                 unblock     使每一行的长度都为cbs。
                 lcase       把大写字符转换为小写字符。
                 ucase       把小写字符转换为大写字符。
                 swab        交换输入的每对字节。
                 noerror     出错时不停止。
                 notrunc     不截短输出文件。
                 sync        将每个输入块填充到ibs个字节。
--help        显示帮助信息。
--version     显示版本信息。

示例

创建ISO光盘映像:

[root@localhost ~]# dd if=/dev/sr0 of=/cd/cdrom.iso bs=2048 conv=noerror,sync

创建/dev/sda硬盘驱动器的 img 文件:

[root@localhost ~]# dd if=/dev/sda of=~/disk1.img

将/dev/sda的内容复制到 /dev/sdb:

[root@localhost ~]# dd if=/dev/sda of=/dev/sdb

创建一个文件,大小为100M:

[root@localhost ~]# dd if=/dev/zero of=a.txt bs=100M count=1
1+0 records in
1+0 records out
104857600 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s
[root@localhost ~]# du -sh a.txt
100.1M    a.txt

生成随机字符串:

[root@localhost ~]# dd if=/dev/urandom bs=1 count=33|base64 -w 0
33+0 records in
33+0 records out
33 bytes (33 B) copied, 0.000199534 s, 165 kB/s
XrjvbxfTkz97rBuTmP5Ahb6gWN6E/uPyXqi/CAgBkEZ8