-
Notifications
You must be signed in to change notification settings - Fork 14
/
dd.txt
72 lines (36 loc) · 2.9 KB
/
dd.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
dd快速生成大文件
# dd if=/dev/zero of=bigfile bs=1M count=300 在当前目录生成一个300M的文件bigfile
在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘,则可以
dd if=/dev/zero of=bigfile bs=1M count=0 seek=130000
此时创建的文件在文件系统中的显示大小为130000MB,但是并不实际占用block,因此创建速度与内存速度相当
seek的作用是跳过输出文件中指定大小的部分,这就达到了创建大文件,但是并不实际写入的目的
当然,因为不实际写入硬盘,所以你在容量只有10G的硬盘上创建100G的此类文件都是可以的
fallocate为文件预分配物理空间,truncate缩小或扩大文件
# fallocate -l 10G bigfile 会占用磁盘
# truncate -s 3G bigfile 把bigfile文件扩大为3G
# dd if=/dev/zero of=bigfile bs=1M count=0 seek=130000 不会占用磁盘,但下载该文件仍旧是1.3G
dd 转换和复制文件
if 是源 设备/文件,这里表示从标准终端读入,block size为 1,数目也为 1,所以就取到了一个字符
# dd if=/dev/tty bs=1 count=1 2> /dev/null
# dd if=/dev/tty bs=1 count=5 2> /dev/null 可输入5次
# dd --h
前面说了如何生成物理硬盘的镜像,如果想生成空镜像文件(本文的主要目的),还需要一个特殊的设备。/dev/zero是Linux提供的一个特殊的字符设备,它的特点是可以永远读该文件,每次读取的结果都是二进制0。
参数if告诉dd从哪个文件读取数据,参数 of告诉dd读出的数据写入哪个文件中。
注意,对于dd来说,输入和输出都是文件,dd做的只是文件拷贝工作,这得益于Unix/Linux下面将设备也抽象为特殊的文件。
除了前面已经解释的of和if参数,这次又出现了bs和count参数。bs=1M表示每一次读写1M数据,count=100表示读写 100次,这样就指定了生成文件的大小为100M。
Linux的dd命令,可以用于生成虚拟块设备文件。既可以用于创建空镜像文件,也可以用于创建物理硬盘的镜像。
dd复制文件,依照操作数转换并格式化。
bs=比特数 一次读写的比特数(参见 ibs=,obs=)
cbs=比特数 一次转换的比特数
conv=CONVS 依照每个逗号分割的标志列表转换文件
count=块数 只将指定个块数复制到块
ibs=比特数 一次读取的比特数(默认:512)
if=文件 从指定文件中读取
iflag=符号 按照以逗号分隔的符号列表指定的方式读取
obs=比特数 一次写入指定比特数(默认:512)
of=文件 写入到指定文件
oflag=符号 按照以逗号分隔的符号列表指定的方式写入
seek=块数 在输出开始处跳过指定的块数
skip=块数 在输入开始处跳过指定的块数
status=noxfer 禁止传输统计
http://blog.licess.org/linux-dd/