Cria um arquivo gzip de tamanho predeterminado

8

Eu quero testar um upload de arquivos do tipo de conteúdo application/x-gzip de vários tamanhos, variando de 100 MB a 999 MB.

Como posso criar arquivos .gz desses tamanhos predeterminados? Se eu fizer dd if=/dev/zero of=somefile bs=1 seek=100 , o arquivo resultante após a compactação é geralmente muito pequeno.

    
por Senthil Kumaran 07.05.2015 / 20:55

2 respostas

18
  • Você pode criar um arquivo gzip de 10MB assim:

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

    Isso usa urandom para obter um fluxo de bytes de alta entropia: isso é incompressível, a versão gzipped será a mesma tamanho como a entrada.

  • Você pode então catenar cópias do seu arquivo gzip juntas:

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

    Trinta cópias do arquivo de origem terão cerca de 300MB e 100 cópias serão de cerca de um gigabyte.

por 07.05.2015 / 21:19
2

Aqui está outro método. Você pode criar arquivos controlando a variável de loop filecount . Isso cria arquivos aleatórios de tamanho entre 100 MB e 900 MB e gzip s.

#!/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
    
por 07.05.2015 / 21:23