所定のサイズのgzipファイルを作成する


8

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

.gzこれらの所定のサイズのファイルを作成するにはどうすればよいですか?私が行う場合dd if=/dev/zero of=somefile bs=1 seek=100、通常、圧縮後のファイルは非常に小さくなります。

回答:


18
  • 次のように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コピーは約1ギガバイトになります。


10Mの代わりに-c 10mを使用する必要がありました。残り良かったです。ありがとう!
Senthil Kumaran、2015年

3
複数のgzipファイルを連結して、連結されたデータを含む別のgzipファイルを取得できますか?それは危険なようです。
user253751

2
はい、gzipファイルを連結できます。stackoverflow.com/questions/8005114/...
ブライスM.デンプシー

2

ここに別の方法があります。ループ変数を制御してファイルを作成できますfilecount。これにより、100MBから900MBのサイズのランダムファイルが作成され、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

1
@dhagありがとう。私はそれを反映するように答えを編集しました。
rahul
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.