所定のサイズのgzipファイルの生成

所定のサイズのgzipファイルの生成

application/x-gzip100MBから999MBまで、さまざまなサイズのコンテンツタイプファイルのアップロードをテストしたいと思います。

.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。これにより、100 MBから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

関連情報