Linux下快速创建大文件的4种方法总结

发表于:2023-1-30 09:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:疯狂的蕉尼基    来源:CSDN

  使用 dd 命令创建大文件
  dd 命令用于复制和转换文件。它最常见的用途是创建实时 Linux USB。
  dd 命令是实际写入硬盘,文件产生的速度取决于硬盘的读写速度,根据文件的大小,该命令将需要一些时间才能完成。
  假设我们要创建一个名为 rumenz.img 的 2 GB 大小的文本文件,可以执行以下操作:
dd if=/dev/zero of=rumenz.img bs=2G count=1
  我们可以根据需要来更改块大小和块数。例如,可以使用 bs=1M 和 count=1024 来获得 1024 Mb 的文件。
  使用 truncate 命令创建大文件
  本命令缩减或扩充指定文件的大小为指定值。参数所指定的文件如果不存在,那么该命令会创建这个文件。
  如果一个文件的大小比参数指定的大,那么超出的部分就会被丢弃。如果一个文件比参数指定的小,那么文件会被扩充,并且被扩充的部分(空洞)在被读取的时候是字节0。
  truncate 命令将一个文件缩小或者扩展到所需大小。使用 -s 选项来指定文件的大小。
  接下来,我们使用 truncare 命令来创建一个 2GB 大小的文件。
truncate -s 2G rumenz.img
  可以使用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 rumenz.img
  可以使用ls -lh rumenz.img查看生成的文件。
  代码创建一个累加数文件
FILESIZE = 1*1024*1024*1024 #1G
print(int(FILESIZE/256))
file = open("./Fibonaci.txt",'w+')
for i in range(int(FILESIZE/256)):
    for j in range(256):
        file.write(str(j))

file.seek(0,0)
#print(file.read())
file.close()
  结论
  dd 和 truncate 创建的文件是稀疏文件。在计算机世界中,稀疏文件是一种特殊文件,具有不同的表观文件大小(它们可以扩展到的最大大小)和真实文件大小(为磁盘上的数据分配了多少空间)。
  fallocate 命令则不会创建稀疏文件,而且它的速度更快,这也是我比较推荐使用 fallocate 创建大文件的原因。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号