创建预定大小的gzip文件


8

我想测试内容application/x-gzip大小从100 MB到999 MB不等的文件的上传。

如何创建.gz这些预定大小的文件?如果我这样做dd if=/dev/zero of=somefile bs=1 seek=100,则压缩后的结果文件通常很小。

Answers:


18
  • 您可以创建一个10MB的gzip文件,如下所示:

    head -c 10M /dev/urandom | gzip -1 >10m.gz
    

    这用于urandom获取高熵的字节流:由于这是不可压缩的,因此压缩后的版本将与输入的大小大致相同。

  • 然后,您可以将gzip文件的副本分类在一起:

    cat $(perl -e "print '10m.gz ' x 30") >300m.gz
    

    源文件的30个副本将约为300MB,而100个副本将约为1 GB。


我必须使用-c 10m而不是10M。休息很好。谢谢!
Senthil Kumaran

3
您可以串联多个gzip文件并获取另一个带有串联数据的gzip文件吗?这似乎很狡猾。
user253751

2
是的,您可以串联gzip文件。stackoverflow.com/questions/8005114/…–
布里斯·登普西

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

3
的输出base64可压缩约25%;我建议跳过base64位并直接调用head /dev/urandom
dhag 2015年

1
@dhag谢谢。我编辑了答案以反映这一点。
rahul 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.