当前位置: 首页 > Linux

如何在1秒内快速创建数百GB的文件?

时间:2023-04-06 04:40:20 Linux

传统的创建文件的方法是:touchvi(m)tee>或>>但这些只适用于创建小文本文件。在某些情况下,出于测试目的,需要快速创建一个非常大的文件,可能需要几百G。这时候,如果需要使用上面的命令,可能要等上一天,效率非常高低的。下面介绍几种常用的方法1、dddd命令可以从标准输入或指定文件中读取数据,复制到新文件中。$ddif=/dev/zeroof=big_filecount=10bs=1G使用time命令可以算出创建一个10G的文件需要多长时间?$timeddif=/dev/zeroof=big_filecount=10bs=1G10+0recordsin10+0recordsout10737418240bytes(11GB)copyed,7.93627s,1.4GB/sreal0m7.941suser0m0.000ssys0m7.935s它用了将近8秒$ls-lhbig_file-rw-r--r--1rootroot10GJun210:57big_file2.fallocatefallocate命令可以为文件预先分配物理空间。-l后跟空间大小,默认单位是字节。也可以后接k、m、g、t、p、e来指定单位,分别代表KB、MB、GB、TB、PB、EB。$fallocate-l10Gbig_file使用time命令计算创建一个10G的文件需要多长时间?$timefallocate-l10Gbig_filereal0m0.002suser0m0.000ssys0m0.001s实际上只有0.001秒。$ls-lhbig_file-rw-r--r--1rootroot10GJun211:01big_file用du命令查看是否真的创建了一个10G的文件?从结果来看,是的。$du-shbig_file10Gbig_file3.truncatetruncate命令可以将文件缩小或扩大到指定的大小,使用-s参数来设置大小。$truncate-s10Gbig_file使用time命令计算创建一个10G的文件需要多长时间?$timetruncate-s10Gbig_filereal0m0.001suser0m0.000ssys0m0.001s也只有0.001秒。但是,与fallocate不同的是,allocate创建的文件是真实大小,而truncate创建的文件不是。使用ls和du命令,查看结果不同。$ls-lhbig_file-rw-r--r--1rootroot10GJun211:11big_file$du-shbig_file0big_file可见truncate的作用是指定一个文件的大小。如果该文件不存在,将创建该文件。如果指定文件的大小小于原始大小,则内容将丢失。该命令指定的文件大小实际上是虚拟的。只是显示的大小。如果您指定一个非常大的文件。事实上,服务器的剩余空间并不会减少。以上是我常用的几种创建大文件的方法,可以根据不同的使用场景来选择。我一般用fallocate,速度够快,也占用真实磁盘空间,符合真实测试场景。