Gru*_*eck 142 linux command-line
出于测试目的,我必须生成一定大小的文件(以测试上载限制).
什么是在Linux上创建特定大小的文件的命令?
Ily*_*tov 176
dd if=/dev/zero of=upload_test bs=file_size count=1
Run Code Online (Sandbox Code Playgroud)
哪里file_size是你的测试文件的字节大小
jør*_*sen 153
请,现代更容易,更快.在Linux上,(选择一个)
truncate -s 10G foo
fallocate -l 5G bar
Run Code Online (Sandbox Code Playgroud)
它需要被指出truncate的文件系统上支持稀疏文件将创建一个稀疏文件,fallocate不会.稀疏文件是指组成文件的分配单元在使用之前未实际分配的文件.然而,该文件的元数据将占用相当大的空间,但可能没有接近文件的实际大小.您应该查阅有关稀疏文件的资源以获取更多信息,因为此类文件有优点和缺点.非稀疏文件具有提前分配的块(分配单元),这意味着只要文件系统看到空间就保留空间.此外fallocate,也truncate不会将文件的内容到指定的值一样 dd,与分配的文件,而不是内容fallocate或者truncate可能是建立时,在配房存在任何垃圾的价值和这种行为可能会或可能不会被期望.它dd是最慢的,因为它实际上将数据的值或块写入整个文件流,如其命令行选项所指定的那样.
此行为可能会有所不同 - 取决于所使用的文件系统以及该文件系统与任何标准或规范的一致性.因此,建议进行适当的研究以确保使用适当的方法.
Bri*_*ian 40
只是为了跟进Tom的帖子,您也可以使用dd创建稀疏文件:
dd if=/dev/zero of=the_file bs=1 count=0 seek=12345
Run Code Online (Sandbox Code Playgroud)
这将在大多数unix上创建一个带有"洞"的文件 - 数据实际上不会写入磁盘,或占用任何空间,直到写入非零的内容.
ste*_*eve 21
在OSX(和Solaris,显然)上,该mkfile命令也可用:
mkfile 10g big_file
Run Code Online (Sandbox Code Playgroud)
这使得一个名为"big_file"的10 GB文件成为可能.在这里找到这种方法.
Gru*_*eck 20
使用此命令:
dd if=$INPUT-FILE of=$OUTPUT-FILE bs=$BLOCK-SIZE count=$NUM-BLOCKS
要创建一个大(空)文件,请设置$INPUT-FILE=/dev/zero.
文件的总大小将是$BLOCK-SIZE * $NUM-BLOCKS.
创建的新文件将是$OUTPUT-FILE.
Ben*_*gel 17
你可以通过编程方式完成:
#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;
}
Run Code Online (Sandbox Code Playgroud)
这种方法对于随后将文件映射到内存特别有用.
使用以下命令检查文件是否具有正确的大小:
# du -B1 --apparent-size /tmp/foo.txt
Run Code Online (Sandbox Code Playgroud)
小心:
# du /tmp/foo.txt
Run Code Online (Sandbox Code Playgroud)
可能会打印0,因为如果您的文件系统支持它,它将被分配为稀疏文件.
dsm*_*dsm 10
你可以这样做:
[dsm@localhost:~]$ perl -e 'print "\0" x 100' > filename.ext
Run Code Online (Sandbox Code Playgroud)
用您要写入的字节数替换100的位置.
dev*_*vin 10
您将其中一些答案/dev/zero用于数据来源.如果您的测试网络上传速度很快,如果您的应用程序正在进行任何压缩,这可能不是最好的主意,一个充满零的文件压缩得非常好.使用此命令生成文件
dd if=/dev/zero of=upload_test bs=10000 count=1
Run Code Online (Sandbox Code Playgroud)
我可以压缩upload_test到大约200字节.因此,您可以将自己置于一个您认为上传10KB文件的情况,但实际上会少得多.
我建议使用/dev/urandom而不是/dev/zero.我根本无法压缩输出/dev/urandom.
dd if=/dev/zero of=my_file.txt count=12345
Run Code Online (Sandbox Code Playgroud)
fallocate如果您不想等待磁盘,请使用。
例子:
fallocate -l 100G BigFile
Run Code Online (Sandbox Code Playgroud)
用法:
Usage:
fallocate [options] <filename>
Preallocate space to, or deallocate space from a file.
Options:
-c, --collapse-range remove a range from the file
-d, --dig-holes detect zeroes and replace with holes
-i, --insert-range insert a hole at range, shifting existing data
-l, --length <num> length for range operations, in bytes
-n, --keep-size maintain the apparent size of the file
-o, --offset <num> offset for range operations, in bytes
-p, --punch-hole replace a range with a hole (implies -n)
-z, --zero-range zero and ensure allocation of a range
-x, --posix use posix_fallocate(3) instead of fallocate(2)
-v, --verbose verbose mode
-h, --help display this help
-V, --version display version
Run Code Online (Sandbox Code Playgroud)
有很多答案,但没有一个很好地解释了还能做什么。查看dd 的手册页,可以更好地指定文件的大小。
这将创建充满零的 /tmp/zero_big_data_file.bin ,其大小为 20 MB :
dd if=/dev/zero of=/tmp/zero_big_data_file.bin bs=1M count=20
Run Code Online (Sandbox Code Playgroud)
这将创建填充零的 /tmp/zero_1000bytes_data_file.bin ,其大小为 1000 字节:
dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin bs=1kB count=1
Run Code Online (Sandbox Code Playgroud)
或者
dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin bs=1000 count=1
Run Code Online (Sandbox Code Playgroud)
这将在当前目录中生成带有随机字符的 4 MB 文本文件,其名称为“4mb.txt”。您可以更改参数以生成不同的大小和名称。
base64 /dev/urandom | head -c 4000000 > 4mb.txt
Run Code Online (Sandbox Code Playgroud)