Buat file gzip dengan ukuran yang telah ditentukan


8

Saya ingin menguji unggahan file jenis konten dengan application/x-gzipberbagai ukuran mulai dari 100 MB hingga 999 MB.

Bagaimana saya bisa membuat .gzfile dengan ukuran yang telah ditentukan ini? Jika saya melakukannya dd if=/dev/zero of=somefile bs=1 seek=100, file yang dihasilkan setelah zip biasanya sangat kecil.

Jawaban:


18
  • Anda dapat membuat file gzip 10MB seperti ini:

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

    Ini digunakan urandomuntuk mendapatkan aliran byte entropi tinggi: karena ini tidak dapat dimampatkan, versi gzip akan memiliki ukuran yang sama dengan input.

  • Anda kemudian dapat menggabungkan salinan file gzip Anda bersama-sama:

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

    Tiga puluh salinan file sumber akan sekitar 300MB, dan 100 salinan akan sekitar satu gigabyte.


Saya harus menggunakan -c 10m bukannya 10M. Istirahatnya bagus. Terima kasih!
Senthil Kumaran

3
Bisakah Anda menggabungkan beberapa file gzip dan mendapatkan file gzip lain dengan data yang digabungkan? Itu tampak cerdik.
user253751

2
Ya, Anda dapat menggabungkan file gzip. stackoverflow.com/questions/8005114/…
Brice M. Dempsey

2

Ini metode lain. Anda dapat membuat file dengan mengontrol variabel loop filecount. Ini membuat file acak berukuran antara 100MB hingga 900 MB dan gzipitu.

#!/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
Output dari base64kompresibel sekitar 25%; Saya akan merekomendasikan melewatkan bit base64 dan memanggil kepala langsung /dev/urandom.
Dhag

1
@hhag terima kasih. Saya mengedit jawaban untuk mencerminkan hal itu.
rahul
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.