出于测试目的,我必须生成一定大小的文件(以测试上载限制).
什么是在Linux上创建特定大小的文件的命令?
dd if=/dev/zero of=upload_test bs=file_size count=1
哪里file_size
是你的测试文件的字节大小
请,现代更容易,更快.在Linux上,(选择一个)
truncate -s 10G foo fallocate -l 5G bar
它需要被指出truncate
的文件系统上支持稀疏文件将创建一个稀疏文件,fallocate
不会.稀疏文件是指组成文件的分配单元在使用之前未实际分配的文件.然而,该文件的元数据将占用相当大的空间,但可能没有接近文件的实际大小.您应该查阅有关稀疏文件的资源以获取更多信息,因为此类文件有优点和缺点.非稀疏文件具有提前分配的块(分配单元),这意味着只要文件系统看到空间就保留空间.此外fallocate
,也truncate
不会将文件的内容到指定的值一样 dd
,与分配的文件,而不是内容fallocate
或者truncate
可能是建立时,在配房存在任何垃圾的价值和这种行为可能会或可能不会被期望.它dd
是最慢的,因为它实际上将数据的值或块写入整个文件流,如其命令行选项所指定的那样.
此行为可能会有所不同 - 取决于所使用的文件系统以及该文件系统与任何标准或规范的一致性.因此,建议进行适当的研究以确保使用适当的方法.
只是为了跟进Tom的帖子,您也可以使用dd创建稀疏文件:
dd if=/dev/zero of=the_file bs=1 count=0 seek=12345
这将在大多数unix上创建一个带有"洞"的文件 - 数据实际上不会写入磁盘,或占用任何空间,直到写入非零的内容.
在OSX(和Solaris,显然)上,该mkfile
命令也可用:
mkfile 10g big_file
这使得一个名为"big_file"的10 GB文件成为可能.在这里找到这种方法.
使用此命令:
dd if=$INPUT-FILE of=$OUTPUT-FILE bs=$BLOCK-SIZE count=$NUM-BLOCKS
要创建一个大(空)文件,请设置$INPUT-FILE=/dev/zero
.
文件的总大小将是$BLOCK-SIZE * $NUM-BLOCKS
.
创建的新文件将是$OUTPUT-FILE
.
你可以通过编程方式完成:
#include#include #include #include #include int main() { int fd = creat("/tmp/foo.txt", 0644); ftruncate(fd, SIZE_IN_BYTES); close(fd); return 0; }
这种方法对于随后将文件映射到内存特别有用.
使用以下命令检查文件是否具有正确的大小:
# du -B1 --apparent-size /tmp/foo.txt
小心:
# du /tmp/foo.txt
可能会打印0,因为如果您的文件系统支持它,它将被分配为稀疏文件.
另见:男子2打开,男子2截断
你可以这样做:
[dsm@localhost:~]$ perl -e 'print "\0" x 100' > filename.ext
用您要写入的字节数替换100的位置.
您将其中一些答案/dev/zero
用于数据来源.如果您的测试网络上传速度很快,如果您的应用程序正在进行任何压缩,这可能不是最好的主意,一个充满零的文件压缩得非常好.使用此命令生成文件
dd if=/dev/zero of=upload_test bs=10000 count=1
我可以压缩upload_test
到大约200字节.因此,您可以将自己置于一个您认为上传10KB文件的情况,但实际上会少得多.
我建议使用/dev/urandom
而不是/dev/zero
.我根本无法压缩输出/dev/urandom
.
dd if=/dev/zero of=my_file.txt count=12345