1. 引言在软件测试、磁盘性能评估、虚拟内存配置或占位文件创建等场景中我们经常需要快速生成指定大小的文件。本文详细介绍在 Windows 和 Linux 系统下生成大容量文件的多种方法包括命令详解、参数说明以及不同方法的优缺点对比。2. Linux 系统生成大容量文件Linux 提供了多种高效生成大文件的方法下面介绍最常用的几种。2.1 使用fallocate命令推荐fallocate是最高效的方法它直接为文件分配磁盘空间而不写入实际数据。# 生成 10GB 大小的文件fallocate-l10G dummy# 生成 1TB 大小的文件fallocate-l1T large_file.bin# 生成 500MB 大小的文件fallocate-l500M test_file.dat参数说明-l或--length指定文件大小支持的单位K(KB)、M(MB)、G(GB)、T(TB)、P(PB)文件名可以自定义如dummy、test.bin等优点⚡极快瞬间完成不写入实际数据节省 I/O不产生磁盘写入操作支持稀疏文件注意事项需要文件系统支持ext4、XFS、Btrfs 等现代文件系统都支持某些旧文件系统可能不支持此命令2.2 使用dd命令dd是更通用的方法适用于所有文件系统但速度较慢。# 使用 /dev/zero 生成 10GB 全零文件ddif/dev/zeroofdummybs1Mcount10240# 使用 /dev/urandom 生成随机数据文件ddif/dev/urandomofrandom_file.binbs1Mcount512# 显示进度statusprogressddif/dev/zerooflarge_filebs1Mcount2048statusprogress参数说明if/dev/zero输入文件生成全零if/dev/urandom输入文件生成随机数据of输出文件名bs块大小建议 1M 或 4Mcount块数量statusprogress显示进度信息计算文件大小文件大小 bs × count2.3 使用truncate命令truncate创建稀疏文件实际不占用磁盘空间直到写入数据。# 创建 10GB 的稀疏文件truncate-s10G sparse_file# 创建 100MB 文件truncate-s100M small_file.bin适用场景测试文件系统对稀疏文件的支持创建占位文件但不立即占用磁盘空间3. Windows 系统生成大容量文件Windows 系统同样提供了多种生成大文件的方法。3.1 使用fsutil命令系统自带fsutil是 Windows 内置工具可以快速创建指定大小的文件。:: 生成 10GB 文件10 × 1024³ 10737418240 字节 fsutil file createNew dummy 10737418240 :: 生成 1GB 文件 fsutil file createNew 1gb_file 1073741824 :: 生成 100MB 文件 fsutil file createNew testfile 104857600语法格式fsutil file createNew 文件名 字节数字节数计算1 GB 1,073,741,824 字节1 MB 1,048,576 字节10 GB 10 × 1,073,741,824 10,737,418,240 字节3.2 使用 PowerShellPowerShell 提供了更灵活的文件创建方式。# 方法1使用 fsutil需要管理员权限fsutil file createNewC:\temp\dummy.dat10737418240# 方法2使用 .NET 方法推荐无需管理员权限[System.IO.File]::WriteAllBytes(dummy.dat,[byte[]]::new(10737418240))# 方法3创建稀疏文件$file[System.IO.File]::Create(sparse.dat)$file.SetLength(10GB)# PowerShell 5.1 支持 GB、MB 单位$file.Close()PowerShell 单位支持5.110GB 10 × 1,073,741,824 字节100MB 100 × 1,048,576 字节1TB 1 × 1,099,511,627,776 字节3.3 使用第三方工具对于频繁操作可以考虑以下第三方工具Quick轻量级 GUI 工具支持多种文件模式Large File Creator专门用于生成测试文件JAM Software TreeSize包含文件创建功能4. 方法对比与选择建议方法系统速度I/O 负载适用场景注意事项fallocateLinux⚡ 极快无性能测试、快速占位需要文件系统支持ddLinux 慢高兼容性要求高、需要真实数据产生实际磁盘写入truncateLinux⚡ 极快无稀疏文件测试实际不占用空间fsutilWindows⚡ 快低Windows 系统测试需要管理员权限PowerShellWindows 中等中等脚本自动化、无管理员权限内存占用较高选择建议Linux 性能测试优先使用fallocateLinux 兼容性测试使用dd if/dev/zeroWindows 快速创建使用fsutil有管理员权限或 PowerShell跨平台脚本考虑使用 Python 脚本统一处理5. 实用技巧与注意事项5.1 验证文件大小创建后务必验证文件大小是否正确# Linuxls-lhdummydu-hdummy# 查看实际磁盘占用statdummy# 查看详细信息# Windowsdirdummy fsutilfilelayout dummy# 查看文件布局5.2 清理生成的文件# Linuxrm-fdummy large_file.bin# Windowsdel dummy# 或使用 PowerShellRemove-Item dummy-Force5.3 性能优化建议块大小选择使用dd时bs1M或bs4M通常是最佳选择文件系统选择ext4/XFS 对fallocate支持最好磁盘类型SSD 上操作远快于 HDD内存考虑PowerShell 创建大文件时可能占用大量内存5.4 常见问题解决问题1fallocate: fallocate failed: Operation not supported原因文件系统不支持解决使用dd或truncate替代问题2fsutil 需要提升权限原因需要管理员权限解决以管理员身份运行 CMD/PowerShell或使用 PowerShell 的 .NET 方法问题3磁盘空间不足检查df -h(Linux) 或wmic logicaldisk get size,freespace,caption(Windows)解决清理磁盘或选择其他分区6. 自动化脚本示例6.1 Linux Bash 脚本#!/bin/bash# create_test_files.shset-eFILE_SIZE${1:-1G}# 默认 1GBFILE_NAME${2:-testfile.bin}echo创建${FILE_SIZE}大小的文件:${FILE_NAME}# 尝试使用 fallocate失败则使用 ddifcommand-vfallocate/dev/null;thenecho使用 fallocate 创建...fallocate-l$FILE_SIZE$FILE_NAMEelseechofallocate 不可用使用 dd 创建...# 将人类可读大小转换为 dd 参数case$FILE_SIZEin*G)SIZE${FILE_SIZE%G};BS1M;COUNT$((SIZE*1024));;*M)SIZE${FILE_SIZE%M};BS1M;COUNT$SIZE;;*K)SIZE${FILE_SIZE%K};BS1K;COUNT$SIZE;;*)BS1M;COUNT1024;;# 默认 1GBesacddif/dev/zeroof$FILE_NAMEbs$BScount$COUNTstatusprogressfiecho文件创建完成ls-lh$FILE_NAME6.2 Windows PowerShell 脚本# Create-TestFile.ps1param([Parameter(Mandatory$false)][string]$FileNametestfile.dat,[Parameter(Mandatory$false)][string]$Size1GB)functionConvert-ToBytes{param([string]$SizeString)$unit$SizeString-replace\d$number[double]($SizeString-replace[^\d\.])switch($unit.ToUpper()){KB{return[int64]($number*1024)}MB{return[int64]($number*1024*1024)}GB{return[int64]($number*1024*1024*1024)}TB{return[int64]($number*1024*1024*1024*1024)}default{return[int64]$number}}}try{$bytesConvert-ToBytes-SizeString$SizeWrite-Host正在创建$Size($bytes字节) 的文件:$FileName-ForegroundColor Cyan# 方法1尝试 fsutil需要管理员权限if([Security.Principal.WindowsPrincipal]::new([Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)){Write-Host使用 fsutil 创建...-ForegroundColor Green fsutil file createNew$FileName$bytes}else{# 方法2使用 .NET 方法无需管理员权限Write-Host使用 .NET 方法创建...-ForegroundColor Yellow[System.IO.File]::WriteAllBytes($FileName,[byte[]]::new($bytes))}Write-Host文件创建成功-ForegroundColor GreenGet-Item$FileName|Format-TableName,Length-AutoSize}catch{Write-Host创建失败:$_-ForegroundColor Redexit1}7. 总结本文详细介绍了在 Windows 和 Linux 系统下生成大容量文件的多种方法Linux 系统fallocate最快推荐用于性能测试dd最通用适合所有场景truncate创建稀疏文件Windows 系统fsutil内置工具需要管理员权限PowerShell灵活支持多种创建方式选择建议追求速度Linux 用fallocateWindows 用fsutil需要兼容性都用dd或对应平台的通用方法自动化部署编写跨平台脚本根据实际需求选择合适的方法并注意验证文件大小和清理测试文件可以高效完成各种测试和开发任务。
Windows和Linux快速生成大容量文件的完整指南
发布时间:2026/7/10 7:12:33
1. 引言在软件测试、磁盘性能评估、虚拟内存配置或占位文件创建等场景中我们经常需要快速生成指定大小的文件。本文详细介绍在 Windows 和 Linux 系统下生成大容量文件的多种方法包括命令详解、参数说明以及不同方法的优缺点对比。2. Linux 系统生成大容量文件Linux 提供了多种高效生成大文件的方法下面介绍最常用的几种。2.1 使用fallocate命令推荐fallocate是最高效的方法它直接为文件分配磁盘空间而不写入实际数据。# 生成 10GB 大小的文件fallocate-l10G dummy# 生成 1TB 大小的文件fallocate-l1T large_file.bin# 生成 500MB 大小的文件fallocate-l500M test_file.dat参数说明-l或--length指定文件大小支持的单位K(KB)、M(MB)、G(GB)、T(TB)、P(PB)文件名可以自定义如dummy、test.bin等优点⚡极快瞬间完成不写入实际数据节省 I/O不产生磁盘写入操作支持稀疏文件注意事项需要文件系统支持ext4、XFS、Btrfs 等现代文件系统都支持某些旧文件系统可能不支持此命令2.2 使用dd命令dd是更通用的方法适用于所有文件系统但速度较慢。# 使用 /dev/zero 生成 10GB 全零文件ddif/dev/zeroofdummybs1Mcount10240# 使用 /dev/urandom 生成随机数据文件ddif/dev/urandomofrandom_file.binbs1Mcount512# 显示进度statusprogressddif/dev/zerooflarge_filebs1Mcount2048statusprogress参数说明if/dev/zero输入文件生成全零if/dev/urandom输入文件生成随机数据of输出文件名bs块大小建议 1M 或 4Mcount块数量statusprogress显示进度信息计算文件大小文件大小 bs × count2.3 使用truncate命令truncate创建稀疏文件实际不占用磁盘空间直到写入数据。# 创建 10GB 的稀疏文件truncate-s10G sparse_file# 创建 100MB 文件truncate-s100M small_file.bin适用场景测试文件系统对稀疏文件的支持创建占位文件但不立即占用磁盘空间3. Windows 系统生成大容量文件Windows 系统同样提供了多种生成大文件的方法。3.1 使用fsutil命令系统自带fsutil是 Windows 内置工具可以快速创建指定大小的文件。:: 生成 10GB 文件10 × 1024³ 10737418240 字节 fsutil file createNew dummy 10737418240 :: 生成 1GB 文件 fsutil file createNew 1gb_file 1073741824 :: 生成 100MB 文件 fsutil file createNew testfile 104857600语法格式fsutil file createNew 文件名 字节数字节数计算1 GB 1,073,741,824 字节1 MB 1,048,576 字节10 GB 10 × 1,073,741,824 10,737,418,240 字节3.2 使用 PowerShellPowerShell 提供了更灵活的文件创建方式。# 方法1使用 fsutil需要管理员权限fsutil file createNewC:\temp\dummy.dat10737418240# 方法2使用 .NET 方法推荐无需管理员权限[System.IO.File]::WriteAllBytes(dummy.dat,[byte[]]::new(10737418240))# 方法3创建稀疏文件$file[System.IO.File]::Create(sparse.dat)$file.SetLength(10GB)# PowerShell 5.1 支持 GB、MB 单位$file.Close()PowerShell 单位支持5.110GB 10 × 1,073,741,824 字节100MB 100 × 1,048,576 字节1TB 1 × 1,099,511,627,776 字节3.3 使用第三方工具对于频繁操作可以考虑以下第三方工具Quick轻量级 GUI 工具支持多种文件模式Large File Creator专门用于生成测试文件JAM Software TreeSize包含文件创建功能4. 方法对比与选择建议方法系统速度I/O 负载适用场景注意事项fallocateLinux⚡ 极快无性能测试、快速占位需要文件系统支持ddLinux 慢高兼容性要求高、需要真实数据产生实际磁盘写入truncateLinux⚡ 极快无稀疏文件测试实际不占用空间fsutilWindows⚡ 快低Windows 系统测试需要管理员权限PowerShellWindows 中等中等脚本自动化、无管理员权限内存占用较高选择建议Linux 性能测试优先使用fallocateLinux 兼容性测试使用dd if/dev/zeroWindows 快速创建使用fsutil有管理员权限或 PowerShell跨平台脚本考虑使用 Python 脚本统一处理5. 实用技巧与注意事项5.1 验证文件大小创建后务必验证文件大小是否正确# Linuxls-lhdummydu-hdummy# 查看实际磁盘占用statdummy# 查看详细信息# Windowsdirdummy fsutilfilelayout dummy# 查看文件布局5.2 清理生成的文件# Linuxrm-fdummy large_file.bin# Windowsdel dummy# 或使用 PowerShellRemove-Item dummy-Force5.3 性能优化建议块大小选择使用dd时bs1M或bs4M通常是最佳选择文件系统选择ext4/XFS 对fallocate支持最好磁盘类型SSD 上操作远快于 HDD内存考虑PowerShell 创建大文件时可能占用大量内存5.4 常见问题解决问题1fallocate: fallocate failed: Operation not supported原因文件系统不支持解决使用dd或truncate替代问题2fsutil 需要提升权限原因需要管理员权限解决以管理员身份运行 CMD/PowerShell或使用 PowerShell 的 .NET 方法问题3磁盘空间不足检查df -h(Linux) 或wmic logicaldisk get size,freespace,caption(Windows)解决清理磁盘或选择其他分区6. 自动化脚本示例6.1 Linux Bash 脚本#!/bin/bash# create_test_files.shset-eFILE_SIZE${1:-1G}# 默认 1GBFILE_NAME${2:-testfile.bin}echo创建${FILE_SIZE}大小的文件:${FILE_NAME}# 尝试使用 fallocate失败则使用 ddifcommand-vfallocate/dev/null;thenecho使用 fallocate 创建...fallocate-l$FILE_SIZE$FILE_NAMEelseechofallocate 不可用使用 dd 创建...# 将人类可读大小转换为 dd 参数case$FILE_SIZEin*G)SIZE${FILE_SIZE%G};BS1M;COUNT$((SIZE*1024));;*M)SIZE${FILE_SIZE%M};BS1M;COUNT$SIZE;;*K)SIZE${FILE_SIZE%K};BS1K;COUNT$SIZE;;*)BS1M;COUNT1024;;# 默认 1GBesacddif/dev/zeroof$FILE_NAMEbs$BScount$COUNTstatusprogressfiecho文件创建完成ls-lh$FILE_NAME6.2 Windows PowerShell 脚本# Create-TestFile.ps1param([Parameter(Mandatory$false)][string]$FileNametestfile.dat,[Parameter(Mandatory$false)][string]$Size1GB)functionConvert-ToBytes{param([string]$SizeString)$unit$SizeString-replace\d$number[double]($SizeString-replace[^\d\.])switch($unit.ToUpper()){KB{return[int64]($number*1024)}MB{return[int64]($number*1024*1024)}GB{return[int64]($number*1024*1024*1024)}TB{return[int64]($number*1024*1024*1024*1024)}default{return[int64]$number}}}try{$bytesConvert-ToBytes-SizeString$SizeWrite-Host正在创建$Size($bytes字节) 的文件:$FileName-ForegroundColor Cyan# 方法1尝试 fsutil需要管理员权限if([Security.Principal.WindowsPrincipal]::new([Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)){Write-Host使用 fsutil 创建...-ForegroundColor Green fsutil file createNew$FileName$bytes}else{# 方法2使用 .NET 方法无需管理员权限Write-Host使用 .NET 方法创建...-ForegroundColor Yellow[System.IO.File]::WriteAllBytes($FileName,[byte[]]::new($bytes))}Write-Host文件创建成功-ForegroundColor GreenGet-Item$FileName|Format-TableName,Length-AutoSize}catch{Write-Host创建失败:$_-ForegroundColor Redexit1}7. 总结本文详细介绍了在 Windows 和 Linux 系统下生成大容量文件的多种方法Linux 系统fallocate最快推荐用于性能测试dd最通用适合所有场景truncate创建稀疏文件Windows 系统fsutil内置工具需要管理员权限PowerShell灵活支持多种创建方式选择建议追求速度Linux 用fallocateWindows 用fsutil需要兼容性都用dd或对应平台的通用方法自动化部署编写跨平台脚本根据实际需求选择合适的方法并注意验证文件大小和清理测试文件可以高效完成各种测试和开发任务。