在 Linux 系统下需测试硬盘或网络的传输的过程中,需要找一些体积大的软件做数据测试,下载或重新寻找测试文件都是一个麻烦事,所以找到了相关命令可以再 Linux 系统下使用命令快速生成任意大小,来解决测试环境中遇到的困境,希望对各位玩家有所帮助。
下面就介绍 Linux 系统下 dd 、 fallocate 和 truncate 命令包含于 GNU coreutils 软件包中,不需要单独安装。
使用 fallocate 命令创建大文件
fallocate 是最高效的方法,它直接为文件分配磁盘空间而不写入实际数据。
使用 fallocate 命令创建指定大小的文件:fallocate -l 500m test-500m.data
示例:
# 生成 10GB 大小的文件
fallocate -l 10G dummy
# 生成 1TB 大小的文件
fallocate -l 1T large_file.bin
# 生成 500MB 大小的文件
fallocate -l 500M test_file.dat
参数说明:
-l或--length指定文件大小- 支持的单位:
K(KB) 、M(MB) 、G(GB) 、T(TB) 、P(PB) - 文件名可以自定义,如
dummy、test.bin等
优点:
- ⚡极快:瞬间完成,不写入实际数据
- 💾节省 I/O:不产生磁盘写入操作
- 🔧支持稀疏文件
注意事项:
- 需要文件系统支持(ext4 、 XFS 、 Btrfs 等现代文件系统都支持)
- 某些旧文件系统可能不支持此命令
使用 dd 命令创建大文件
Linux 系统下的 dd 命令很是强大,可以直接使用 dd 命令来创建指定大小的文件,一般系统都会自带,不需要额外安装。
dd(device driver) 命令常用来复制备份文件,与 cp 命令具有以下区别:
- dd 是对块进行操作,操作磁盘的扇区字节,
- cp 操作文件或目录,对于不能以文件或目录格式呈现的数据 cp 无法复制。
- dd 是对磁盘连续的读取,也就是完全的数据搬移,cp 复制的数据排列不是按顺序的。
也可以使用这个 dd 命令来创建特定大小的文件,适用于所有文件系统 ,但速度较慢。
生成固定大小文件,命令的格式为:dd if=/dev/zero of=要生成的文件 bs=读入的 block 大小 count=读取的 block 个数
示例:在/home 目录下创建一个后缀名为.dat 的文件
#命令用法:(注意空格)
dd if=/dev/zero of=要生成的文件 bs=读入的 block 大小 count=读取的 block 个数
# 创建 100MB 的文件示例:
dd if=/dev/zero of=/home/100MB.dat bs=1M count=100
#其中/home/代表路径、 100MB.dat 代表文件名称。
#使用/dev/zero 创建 1GB 的全零文件示例:
dd if=/dev/zero of=/home/1GB.dat bs=1M count=1024
#使用/dev/zero 创建 10GB 的全零文件示例:
dd if=/dev/zero of=/home/10GB.dat bs=1M count=10240
# 使用/dev/urandom 生成随机数据文件
dd if=/dev/urandom of=/home/512M.dat bs=1M count=512
# 显示进度(status=progress)
dd if=/dev/zero of=large_file bs=1M count=2048 status=progress
参数说明
if指定输入文件:/dev/urandom、/dev/random、/dev/zero、/dev/null介绍:/dev/urandom和/dev/random都可以产生随机的 ASCII 码字符流/dev/random依赖系统中断,当系统中断不足时,/dev/random设备会 “挂起” 。/dev/urandom不依赖系统中断,所以在生成特定大小文件时一般使用/dev/urandom,不使用/dev/urandom。
/dev/zero“零” 设备可以无限的提供空字符,产生二进制的零流/dev/null“空” 设备,像” 黑洞 “一样,所有写入它的内容都会永远丢失,也不会读取到任何内容。常用于禁止标准输出和标准错误的输出,比如抓包命令:tcpdump -i eth1 -w /tmp/packet.pcap >/dev/null &
of=:输出文件名bs=:块大小(建议 1M 或 4M)count=:块数量seek:指定一开始跳过的区块数量status=progress:显示进度信息
使用 truncate 命令创建大文件
truncate 创建稀疏文件,实际不占用磁盘空间直到写入数据。
# 创建 10GB 的稀疏文件
truncate -s 10G sparse_file
# 创建 100MB 文件
truncate -s 100M small_file.bin
适用场景:
- 测试文件系统对稀疏文件的支持
- 创建占位文件但不立即占用磁盘空间
选择建议
- Linux 性能测试:优先使用
fallocate,最快,推荐用于性能测试 - Linux 兼容性测试:使用
dd if=/dev/zero,最通用,适合所有场景
扩展阅读
- Linux 系统中快速生成指定大小的文件,https://zhuanlan.zhihu.com/p/639721287
- Windows 和 Linux 快速生成大容量文件的完整指南,https://blog.csdn.net/weixin_46191006/article/details/162732932