linux系统中如何快速创建一个10G文件在工作中经常遇到想快速创建一个大文件比如创建一个100G的文件达到提升磁盘使用率的目的下面介绍几种创建大文件的方法。01 dd命令创建一个自定义大小的文件语法dd if[source] of[destination] bs[block-size] count[counter]从 source 读取并拷贝内容到 destination source 和 destination 都是文件前者是读取的文件后者是写入的文件bs : 表示块的大小单位是字节如1M、1G、10Gcount : 表示块的数量表示 dd 命令需要执行多少次读取并写入的操作bs 乘以 count 其实就表示目标文件的大小也即需要创建的文件的大小示例创建一个10G的文件dd if/dev/zero of/log/db.log bs1G count10上面的命令表示从 /dev/zero文件每次读取 1G大小的数据并写入/log/db.log文件中 bs1G count10 表示块大小是1G总共有10个块 所以目标文件最终的大小是: 1G * 10 10G/dev/zero 是一个特殊的字符设备文件当读取它的时候它会返回空数据这里表示从 /dev/zero读取空的数据写入 /log/db.log 中从结果可以得知用 dd 命令创建一个 10G 大小的文件花费了约 32.1 秒02 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等单位下面的实例是往 yes.log 文件写入每行的内容是: this is a test content , 一直到文件大小达到 10Gtime yes This is a test content | head -c 10G yes.log上述命令中的time命令是为了统计创建文件所消耗的时间从结果来看yes命令创建一个10G的文件花费时间和dd命令差不多。03 fallocate命令fallocate 命令可以通过下面的语法创建大文件。fallocate -l [size of file] [name of file]-l 选项表示文件大小单位是字节后面可以接K、KB、M、MB、G、GB等单位下面的命令是创建一个10G大小的文件time fallocate -l 10G fallocate.log从结果来看fallocate 命令创建一个10G大小的文件竟然只花费了0.01秒通过ll命令查看创建的文件可以看出也确实创建出了10G的文件。04 创建速度的差异从上面的几个实例可以看出同样是创建一个 10G的文件 fallocate 命令只需要不到 0.1 秒的时间但是 dd 和 yes 命令需要 20多秒为什么会有这么大的差别呢fallocate 将空间分配给文件但是不会往文件中写入任何数据dd 和 yes 都有写文件操作而这需要大量的 IO 时间所以同样创建 10G 的文件它们比 fallocate 要慢很多05 如何选择dd 、yes、fallocate 这几个命令都可以创建大文件, 在日常的使用中我们该如何选择呢 ?对速度没有很高的要求的情况下一般首选 dd 如果希望创建的文件中写入自定义的内容的话使用 yes。如果想快速地创建大文件比如 1 秒内创建一个 100G 的文件选择 fallocate大部分情况下fallocate 都能满足要求所以不想仔细分析的话使用 fallocate 就行了。