Мне нужно протестировать хост sftp на предмет его ограничения размера файла для загрузки. Я хотел создать серию файлов, которые были бы все большего размера, чтобы попытаться загрузить их все и посмотреть, где они терпят неудачу.
Я делал это for i in {10000..100000} ; do dd if=/dev/zero of=testfile$i bs=$i count=1 ; done ;
, но это занимало слишком много времени, а файлы, которые я получал, начинались с 10 КБ, затем увеличивались до 11 КБ, 12 КБ и т. д. Я хочу, чтобы размер увеличивался с большими приращениями.
Как можно создать серию файлов, которые не будут иметь столь мелкозернистой разницы в размере? Я думаю, что предел составляет от 0 до 1 МБ.
решение1
От dd(1)
:
bs=БАЙТЫ
/.../
За БЛОКАМИ и БАЙТАМИ могут следовать следующие мультипликативные суффиксы: c =1, w =2, b =512, кБ =1000, К =1024, МБ =1000*1000, М =1024*1024
В качестве альтернативы, если у вас установлена последняя версия bash, {}
конструкция также принимает параметр шага:
for i in {10000..100000..1000}; do dd if=/dev/zero of=testfile$i bs=$i count=1 ; done
решение2
Для академических целей это даст команду 1k входных файлов с шагом 1024 байта путем добавления к тому же файлу.
while ((++n<=1024)); do
printf '\0%.s' {1..1024} >&3
xxd -g 1 /dev/stdin; echo # sftp command here
done <<<'' 3>/dev/stdin
Но... методом проб и ошибок? Я бы нашел способ получше.