如何建立在Linux中给定大小的文件?(How to create a file with a gi

2019-07-05 16:01发布

出于测试目的,我不得不产生一定大小的文件(测试的上传限制)。

什么是命令来创建Linux上有一定大小的文件?

Answer 1:

dd if=/dev/zero of=upload_test bs=file_size count=1

其中file_size是你的测试文件的字节大小



Answer 2:

请,现代更容易,更快。 在Linux上,(任选其一)

truncate -s 10G foo
fallocate -l 5G bar

需要说明的是truncate的文件系统支持稀疏文件将创建一个稀疏文件和fallocate不会。 稀疏文件是一个地方的分配单元组成的文件中没有实际分配,直到使用。 然而,元数据文件占用一些相当大的空间,但可能没有在附近的文件的实际大小。 因为有优点和缺点这种类型的文件,您应该咨询有关详细信息,稀疏文件资源。 非稀疏文件具有分配给它的时间提前,这意味着该空间尽可能的文件系统把它保留块(分配单元)。 此外fallocate也不truncate不会对文件的内容设置为一个规定值dd ,与分配的文件,而不是内容fallocatetruncate可能是创建过程中所分配的单位存在的任何垃圾值,而这种行为可能会或可能不会是期望的。 的dd是最慢的,因为它实际上作为写入用它的命令行选项指定的值或数据的组块到整个文件流。

这种行为可能会有所不同-这取决于使用的文件系统和文件系统的一致性,以任何标准或规范上。 因此,建议,适当的研究做是为了确保使用适当的方法。



Answer 3:

只是跟进汤姆的职位,您可以用dd创建稀疏文件以及:

dd if=/dev/zero of=the_file bs=1 count=0 seek=12345

这将创建在大多数的Unix在它一个“洞”文件 - 将数据实际上不会被写入到磁盘,或者占用,直至为零以外的东西被写入到它的任何空间。



Answer 4:

使用此命令:

dd if=$INPUT-FILE of=$OUTPUT-FILE bs=$BLOCK-SIZE count=$NUM-BLOCKS

要创建一个大的(空的)文件,设置$INPUT-FILE=/dev/zero
该文件的总大小将$BLOCK-SIZE * $NUM-BLOCKS
创建新的文件将被$OUTPUT-FILE



Answer 5:

在OSX(和Solaris,显然),所述mkfile命令可用,以及:

mkfile 10g big_file

这使得一个名为“big_file”一个10 GB的文件。 发现这种方法在这里。



Answer 6:

您可以通过编程做到这一点:

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main() {
    int fd = creat("/tmp/foo.txt", 0644);
    ftruncate(fd, SIZE_IN_BYTES);
    close(fd);
    return 0;
}

这种方法是特别有用随后的mmap文件到内存中。

使用下面的命令来检查该文件具有正确的大小:

# du -B1 --apparent-size /tmp/foo.txt

小心:

# du /tmp/foo.txt

因为它被分配为可能会打印0 稀疏文件,如果文件系统的支持。

还看到: 男子2开放和男子2截断



Answer 7:

你可以这样做:

[dsm@localhost:~]$ perl -e 'print "\0" x 100' > filename.ext

当你与要写入的字节数代替100。



Answer 8:

有些答案有你使用/dev/zero为您的数据源。 如果您的测试网络上传速度,这可能不是最好的主意,如果你的应用程序做任何压缩,全零的文件压缩很好。 使用此命令生成的文件

 dd if=/dev/zero of=upload_test bs=10000 count=1

我可以压缩upload_test下降到约200个字节。 所以,你可以把自己的情况下,你认为你的上传文件10KB的情况,但它实际上是少得多。

我的建议是使用/dev/urandom代替/dev/zero 。 我可能不压缩输出/dev/urandom非常多的。



Answer 9:

dd if=/dev/zero of=my_file.txt count=12345


Answer 10:

由于shell命令:

< /dev/zero head -c 1048576 >  output


Answer 11:

有很多答案,但没有很好的解释还有什么可以做的。 展望手册页DD ,就可以更好地指定一个文件的大小。

这将创造/tmp/zero_big_data_file.bin用零填充,有20兆大小:

    dd if=/dev/zero of=/tmp/zero_big_data_file.bin  bs=1M count=20

这将创造/tmp/zero_1000bytes_data_file.bin用零填充,有1000个字节大小:

    dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin  bs=1kB count=1

要么

    dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin  bs=1000 count=1

  • 在所有实施例中,BS是块的大小,和计数的块数
  • 块和BYTES之后可以是以下乘法后缀:C = 1,W = 2,B = 512,KB = 1000,K = 1024,MB = 1000 * 1000,M = 1024 * 1024,XM = M GB = 1000 * 1000 * 1000,G = 1024 * 1024 * 1024,依此类推为T,P,E,Z,Y。


Answer 12:

这将产生在当前目录下,它的名字随机字符4 MB的文本文件“4mb.txt”你可以改变参数,以产生不同的大小和名称。

base64 /dev/urandom | head -c 4000000 > 4mb.txt


文章来源: How to create a file with a given size in Linux?