我想测试上传application/x-gzip
100 MB 到 999 MB 各种大小的内容类型的文件。
我该如何创建.gz
这些预定大小的文件?如果我这样做dd if=/dev/zero of=somefile bs=1 seek=100
,压缩后生成的文件通常非常小。
答案1
您可以像这样创建一个 10MB 的 gzip 文件:
head -c 10M /dev/urandom | gzip -1 >10m.gz
这用于
urandom
获取高熵字节流:由于这是不可压缩的,因此 gzip 压缩版本的大小将与输入的大小大致相同。然后,您可以将 gzip 文件的副本连接在一起:
cat $(perl -e "print '10m.gz ' x 30") >300m.gz
源文件的 30 个副本大约为 300MB,100 个副本大约为 1GB。
答案2
这是另一种方法。您可以通过控制循环变量来创建文件filecount
。这将创建大小在 100MB 到 900 MB 之间的随机文件并gzip
保存它们。
#!/bin/bash
filecount=0
while [ $filecount -lt 10 ]
do
filesize=$((RANDOM%9+1))
filesize=$(($filesize*104857600))
</dev/urandom head -c "$filesize" | gzip > /tmp/file${filecount}.$RANDOM.gz
((filecount++))
done