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

1. 使用 dd 命令创建大文件

dd 命令是实际写入硬盘,文件产生的速度取决于硬盘的读写速度,根据文件的大小,该命令将需要一些时间才能完成。
创建一个名为 test.img 的 2 GB 大小的文本文件,执行以下操作:
dd if=/dev/zero of=test.img bs=2G count=1
其中根据需要来更改块大小和块数。例如,可以使用 bs=1M 和 count=1024 来获得 1024 Mb 的文件。

2. 使用 truncate 命令创建大文件

本命令缩减或扩充指定文件的大小为指定值,参数所指定的文件如果不存在,那么该命令会创建这个文件。
如果一个文件的大小比参数指定的大,那么超出的部分就会被丢弃;如果一个文件比参数指定的小,那么文件会被扩充,并且被扩充的部分(空洞)在被读取的时候是字节0。
truncate 命令将一个文件缩小或者扩展到所需大小,使用 -s 选项来指定文件的大小。
使用 truncare 命令来创建一个 2GB 大小的文件:
truncate -s 2G test.img
可以使用ls -lh test.img命令查看生成的文件。默认情况下,如果请求的输出文件不存在,truncate 命令将创建新文件,可以使用 -c 选项来避免创建新文件。

3. 使用 fallocate 命令创建大文件

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

4. 代码创建一个累加数文件
    FILESIZE = 1*1024*1024*1024
    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)
    file.close()

5. 结论
dd 和 truncate 创建的文件是稀疏文件。在计算机世界中,稀疏文件是一种特殊文件,具有不同的表观文件大小(它们可以扩展到的最大大小)和真实文件大小(为磁盘上的数据分配了多少空间)。
fallocate 命令则不会创建稀疏文件,而且它的速度更快。

posted @ 2023-12-18 15:45  TK-D小跆风  阅读(832)  评论(0编辑  收藏  举报