Crie uma série de arquivos cada vez maiores

1

Eu preciso testar um host sftp para seu limite de limitação de upload de tamanho de arquivo. Eu queria fazer uma série de arquivos que eram de tamanhos cada vez maiores, para tentar enviar todos eles e ver onde eles falharam.

Eu estava fazendo for i in {10000..100000} ; do dd if=/dev/zero of=testfile$i bs=$i count=1 ; done ; mas isso estava demorando demais, e os arquivos que eu estava recebendo estavam começando em 10K, indo para 11K, 12K, etc. Eu quero que o tamanho pule em incrementos maiores.

Como é possível criar uma série de arquivos que não tenham uma diferença de tamanho tão fina? Eu estou pensando que o limite está entre 0 e 1 MB.

    
por user394 02.07.2012 / 23:48

2 respostas

4

De dd(1) :

bs=BYTES

/.../

BLOCKS and BYTES may be followed by the following multiplicative suffixes: c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024

Como alternativa, se você tiver uma versão recente do bash, o {} construct também receberá um parâmetro de etapa:

for i in {10000..100000..1000}; do dd if=/dev/zero of=testfile$i bs=$i count=1 ; done
    
por 02.07.2012 / 23:53
1

Para fins acadêmicos, isso daria a um comando 1k arquivos de entrada em incrementos de 1024 bytes, anexando ao mesmo arquivo.

while ((++n<=1024)); do
    printf '
while ((++n<=1024)); do
    printf '%pre%%.s' {1..1024} >&3
    xxd -g 1 /dev/stdin; echo # sftp command here
done <<<'' 3>/dev/stdin
%.s' {1..1024} >&3 xxd -g 1 /dev/stdin; echo # sftp command here done <<<'' 3>/dev/stdin

Mas ... tentativa e erro? Eu encontraria um jeito melhor.

    
por 03.07.2012 / 00:10

Tags