dd-又一个拷贝命令

简介

在Linux上说到文件拷贝,很多时候第一反应就是 cp ,但是除了 cp 之外,还有一个是基于底层的拷贝命令,那就是 dd

dd 是基于块接口进行数据拷贝,效率比基于文件接口的 cp 要高很多,而且还有很多自定义选项。

使用

dd 命令的使用很简单,但要理解并熟悉运用自定义参数也是不那么容易的,下面只讨论一些常用选项,更多信息可使用 man dd 查看。

dd 选项

选项详细为:

1
2
3
4
5
6
7
8
9
10
11
bs=<字节数>:将ibs(输入)与obs(输出)设成指定的字节数(区块大小); 
cbs=<字节数>:转换时,每次只转换指定的字节数;
conv=<关键字>:指定文件转换的方式;
count=<区块数>:仅读取指定的区块数;
ibs=<字节数>:每次读取的字节数;
obs=<字节数>:每次输出的字节数;
of=<文件>:输出到文件;
seek=<区块数>:一开始输出时,跳过指定的区块数;
skip=<区块数>:一开始读取时,跳过指定的区块数;
--help:帮助;
--version:显示版本信息。

简单使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 拷贝文件

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

# 拷贝文件指定大小

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=5M count=1 # 只拷贝SRC中前5M的内容到DEST,与"bs=1M count=5"等价。

# 磁盘拷贝

dd if=/dev/sda of=/dev/sdb

# 备份MBR

dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

# 破坏MBR中的bootloader

dd if=/dev/zero of=/dev/sda bs=256 count=1

块大小可以使用的计量单位表:

单元大小 代码
字节(1B) c
字节(2B) w
块(512B) b
千字节(1024B) k
兆字节(1024KB) M
吉字节(1024MB) G

两个特殊设备:

/dev/null:数据黑洞;

/dev/zero:吐零机。