dd

更新时间:
2024-01-09
下载文档

dd

可执行程序位置: /usr/bin/dd

复制文件,根据操作数进行转换和格式化。

格式

dd if=input_file of=output_file bs=block_size ...

说明

该命令和系统内置命令的用法略有不同,使用 key=value 这种格式对复制文件的方式和格式进行说明。以下为dd 的参数示例。

bs=BYTES        指定每次读取和写入的字节数
cbs=BYTES       指定一次读取和写入的字节数
conv=CONVS      指定一系列用逗号分隔的转换操作
  ucase:    将文件内容转换为大写
  lcase:    将文件内容转换为小写
  swab:     交换相邻的字节,用于处理不用字节顺序的数据
  noerror:  忽略输入文件中的读取错误
  sync:     将输出文件用零字节填充,以使其大小满足指定的块大小
count=BLOCKS    指定要复制的快数
ibs=BYTES       指定每次从输入文件中读取的字节数,默认为512字节
if=FILE         指定输入文件的路径,默认从标准输入(stdin)中读取数据
iflag=FLAGS     指定用于读取输入文件的一系列标志
  direct:    使用文件IO 进行读取,绕过缓存区
  sync:      在每次读取之前强制同步文件
obs=BYTES       指定每次写入输出文件的字节数,默认为512字节
of=FILE         指定输出文件的路径,默认将数据写入标准输出(stdout)
oflag=FLAGS     指定用于写入输出文件的一系列标志
seek=BLOCKS     跳过输出文件的前面指定块数,每个块的大小由 obs 参数定义
skip=BLOCKS     跳过输入文件的前面指定块数,每个块的大小由 ibs 参数定义
status=noxfer   禁止显示传输统计信息,以便在命令执行完成后不显示字节数和传输速度等信息

BLOCKS 和 BYTES 可以后跟以下乘法后缀:
c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M
GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.

样例

注意:每一种用法之前会标注相应的注释。dd 命令的用法涉及到多种不同文件,参考时请核对文件和示例文件是否一致,不一致时根据自己的文件情况修改。

  1. 复制普通文件
 [root@sylixos:/apps]# echo "hello, SylixOS!" >test1
[root@sylixos:/apps]# ls
test1
[root@sylixos:/apps]# cat test1
hello, SylixOS!
[root@sylixos:/apps]# dd if=test1 of=test2
0+1 records in
0+1 records out
17 bytes (17B) copied, 0.018326 seconds, 927B/s
[root@sylixos:/apps]# ls
test1  test2
[root@sylixos:/apps]# cat test2
hello, SylixOS!
[root@sylixos:/apps]# dd if=/apps/test1 of=/apps/test3
0+1 records in
0+1 records out
17 bytes (17B) copied, 0.017991 seconds, 944B/s
[root@sylixos:/apps]# ls
test1  test2  test3
[root@sylixos:/apps]# cat test3
hello, SylixOS!
  1. 创建一个指大小的空文件
[root@sylixos:/apps/test]# dd if=/dev/zero of=empty_file bs=100 count=1
1+0 records in
1+0 records out
100 bytes (100B) copied, 0.005551 seconds, 17.6KB/s
[root@sylixos:/apps/test]# ll
-rw-rw-rw- root     root     Thu Aug 24 05:09:10 2023    100 B, empty_file
      total items: 1
[root@sylixos:/apps/test]# cat empty_file

[root@sylixos:/apps/test]# 
  1. 验证 seek参数和skip参数的用法

注意:

seek参数指定输出时跳过的块数,意为先对输出文件跳块,之后再进行文件写操作,所以输出文件(seek)的内容不会缺少。skip参数指定输入时跳过的块数,意为先对输入文件跳块,之后再对输出文件进行写操作,所以输出文件(skip)的内容会缺少。

[root@sylixos:/apps/test]# ll
-rw-rw-rw- root     root     Thu Aug 24 05:18:33 2023     14 B, hello
      total items: 1
[root@sylixos:/apps/test]# dd if=hello of=seek seek=5  obs=1          
0+1 records in
14+0 records out
14 bytes (14B) copied, 0.010779 seconds, 1.3KB/s
[root@sylixos:/apps/test]# dd if=hello of=skip skip=10  ibs=1  
4+0 records in
0+1 records out
4 bytes (4B) copied, 0.006431 seconds, 621B/s
[root@sylixos:/apps/test]# ll
-rw-rw-rw- root     root     Thu Aug 24 05:29:56 2023     19 B, seek
-rw-rw-rw- root     root     Thu Aug 24 05:18:33 2023     14 B, helo
-rw-rw-rw- root     root     Thu Aug 24 05:30:23 2023      4 B, skip
      total items: 3
[root@sylixos:/apps/test]# cat seek
HELLO WORLD! 
[root@sylixos:/apps/test]# cat skip
D! 
[root@sylixos:/apps/test]# 
文档内容是否对您有所帮助?
有帮助
没帮助