目录

windows下创建自定义大小文件

使用fsutil.exe创建自定义大小文件

Linux下创建自定义大小文件

使用 dd 命令创建自定义大小文件

使用truncate命令创建自定义大小文件

使用 fallocate 命令创建自定义大小文件

使用yes命令创建自定义大小文件

结论


windows下创建自定义大小文件

使用fsutil.exe创建自定义大小文件

一、fsutil.exe 创建指定大小文件指定内容生成指定大小文件快速生成多个指定大小文件。

fsutil支持命令参数
8dot3name         8dot3name 管理
behavior          控制文件系统行为
dax               Dax 卷管理
dirty             管理卷更改位
file              文件特定命令
fsInfo            文件系统信息
hardlink          硬链接管理
objectID          对象 ID 管理
quota             配额管理
repair            自愈管理
reparsePoint      重分析点管理
storageReserve    存储保留管理
resource          事务性资源管理器管理
sparse            稀疏文件控制
tiering           存储分层属性管理
transaction       事务管理
usn               USN 管理
volume            卷管理
wim               透明 wim 托管管理

用法 : fsutil file createNew <filename> <length>
例如 : fsutil file createNew C:\testfile.txt 1000

在c盘下创建 C:\1024.txt 大小为 1KB 的文件 1024.txt

fsutil file createNew c:\1024.txt 1024

需要注意的是,通过 fsutil 指令生成的文件是空文件。

二、指定内容生成指定大小文件

在 c:\test 目录下创建大小为 2KB 的文件 2k.txt,文件内容是 1024个( 中文汉)字。

"一个汉字"*1024 >2k.txt

补充扩展知识:一个汉字等于2个字符。

在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。
在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。在UTF-32编码中,世界上任何字符的存储都需要4个字节。

三、快速生成多个指定大小文件

想要一次性生成 10个 10M大小的文件,可以创建一个批处理脚本 create_file.bat,脚本内容如下:10M=10485760=1024*1024*10

先了解
1KB = 1 * 1024 = 1024 Byte
1MB = 1 * 1024 * 1024 = 1048576 Byte
1GB = 1 * 1024 * 1024 * 1024 = 1073741824 Byte

@echo off
set a=1
:loop
fsutil file createnew file%a%.txt 10485760
echo file%a% done
set /a a+=1
if %a% lss 11 goto :loop
pause

Linux下创建自定义大小文件

使用 dd 命令创建自定义大小文件

dd语法:

dd if=[source] of=[destination] bs=[block-size] count=[counter]

dd 命令用于复制和转换文件。它最常见的用途是创建实时 Linux USB。
dd 命令是实际写入硬盘,文件产生的速度取决于硬盘的读写速度,根据文件的大小,该命令将需要一些时间才能完成。
假设我们要创建一个名为 file_1G.txt 的 1GB 大小的文本文件,可以执行以下操作:

dd if=/dev/zero of=file_1G.txt bs=2G count=1

也可更改块大小和块数来确定文件大小

公式:文件的实际大小=bs*count

可以使用 bs=1M 和 count=1024 来获得1G 的文件。
dd if=/dev/zero of=file_1G.txt bs=1M count=1024

使用truncate命令创建自定义大小文件

truncate语法:

truncate -s [file-size] [name of the file]

命令是缩减或扩充指定文件的大小为指定值。
参数所指定的文件如果不存在,那么该命令会创建这个文件。
如果一个文件的大小比参数指定的大,那么超出的部分就会被丢弃。如果一个文件比参数指定的小,那么文件会被扩充,并且被扩充的部分(空洞)在被读取的时候是字节0。
truncate 命令将一个文件缩小或者扩展到所需大小。使用 -s 选项来指定文件的大小。
接下来,我们使用 truncare 命令来创建一个 1GB 大小的文件。

truncate -s 1G file_1G.txt

可以使用ls -lh rumenz.img命令查看生成的文件。

默认情况下,如果请求的输出文件不存在,truncate 命令将创建新文件。我们可以使用 -c 选项来避免创建新文件。

使用 fallocate 命令创建自定义大小文件

fallocate命令可能是Linux中可以用来创建文件的鲜为人知的命令之一。fallocate用于将块预分配给文件。对于支持fallocate系统调用的文件系统,这可以通过分配块并将其标记为未初始化来快速完成,因此不需要对数据块进行I / O操作。这是创建文件而不是用零填充的更快的方法。大文件几乎可以立即创建,而不必等待任何I / O操作完成。在以下文件系统上支持fallocate系统调用:btrfs,ext4,ocfs2和xfs文件系统(自内核版本v2.6.31起)。

fallocate 命令是我比较推荐的创建大文件的方法,因为它创建大文件的速度是最快的。
假设我们要创建一个 1 GB 的文件,可以执行以下操作:

fallocate -l 1G file_1G.txt

使用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 

yes “hello,word”| head -c 1G > 1G_file

结论

dd 和 truncate 创建的文件是稀疏文件。在计算机世界中,稀疏文件是一种特殊文件,具有不同的表观文件大小(它们可以扩展到的最大大小)和真实文件大小(为磁盘上的数据分配了多少空间)。

fallocate 命令则不会创建稀疏文件,而且它的速度更快,这也是我比较推荐使用 fallocate 创建大文件的原因。

注意:fallocate 命令只支持 btrfs、ext4、 ocfs2、xfs 这几种文件系统,而 truncate 命令支持所有的现代文件系统

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐