dd
dd 命令的语法如下
dd if=[source] of=[destination] bs=[block-size] count=[counter]
if= #输入,从文件设备中输入
of= #输出,一般用于输出到文件
bs= #每块的大小,与count呼应
count= #给文件分割成多少块,与bs呼应
ps:
bs * count = 文件的实际大小
例如:
创建一个1G的文件,使用time统计使用时间
time dd if=/dev/zero of=1G_file bs=1G count=1
#创建一个1G的文件花费了1.225s
ps:
/dev/zero 是一个特殊的字符设备文件,当读取它的时候,它会返回空数据,这里表示从 /dev/zero读取空的数据写入 1G_file 中
yes
前面的 dd 命令创建的是空字符的文件,如果想文件中包含自定义的字符,可以使用 yes 命令,它的作用是循环输出一行指定的字符串,直到进程结束,为了控制文件的大小并打破循环,我们借助 head 命令来实现,使用 yes 命令创建包含指定内容文件的语法如下
yes [string] | head -c [size of file] > [name of file]
string 是写入文件每一行的字符串
head -c [size of file] 是接收指定大小的字符串,单位是字节,后面也可以接 K、KB、M、MB、G、GB等单位
例如:
创建一个1G的文件,每行的内容是: hello,word ,使用time统计所用时间
time yes “hello,word”| head -c 1G > 1G_file
#创建一个文件花了1.071s
ps:每行都是hello,word
fallocate
fallocate 命令使用下面的语法 创建大文件
fallocate -l [size of file] [name of file]
-l 选项表示文件大小,单位是字节,后面可以接 K、KB、M、MB、G、GB等单位
下面的命令是创建一个 1G 大小的文件,使用time统计所花时间
time fallocate -l 1G 1G_file
#所花时间0s,最快的方式了
truncate
truncate 命令是缩小或者扩展文件至指定大小,它的语法如下:
truncate -s [file-size] [name of the file]
-s 选项表示文件大小,单位是字节,跟 fallocate 命令一样,后面可以接 K、KB、M、MB、G、GB等单位
下面是使用 truncate 命令创建一个 1G的文件的示例,使用time来统计所花时间
下面是使用 truncate 命令创建一个 1G的文件的示例,使用time来统计所花时间
#所花时间0.001s
ps:
truncate 命令 创建的是一个稀疏文件而不是实际的文件 ,稀疏文件不会占用磁盘空间
注意:fallocate 命令只支持 btrfs、ext4、 ocfs2、xfs 这几种文件系统,而 truncate 命令支持所有的现代文件系统