Erstellen Sie eine Reihe von immer größeren Dateien

Erstellen Sie eine Reihe von immer größeren Dateien

Ich muss einen SFTP-Host auf seine Begrenzung der Upload-Dateigröße testen. Ich wollte eine Reihe von Dateien erstellen, die immer größer wurden, um zu versuchen, sie alle hochzuladen und zu sehen, wo es fehlschlug.

Das habe ich gemacht for i in {10000..100000} ; do dd if=/dev/zero of=testfile$i bs=$i count=1 ; done ; , aber es hat zu lange gedauert und die Größe der Dateien, die ich erhalten habe, begann bei 10 KB, ging dann weiter bis 11 KB, 12 KB usw. Ich möchte, dass die Größe in größeren Schritten ansteigt.

Wie kann ich eine Reihe von Dateien erstellen, deren Größenunterschiede nicht so gering sind? Ich denke, die Grenze liegt zwischen 0 und 1 MB.

Antwort1

Aus dd(1):

bs=BYTES

/.../

Auf BLOCKS und BYTES können die folgenden multiplikativen Suffixe folgen: c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024

Wenn Sie eine aktuelle Version von Bash haben, {}akzeptiert die Konstruktion alternativ auch einen Schrittparameter:

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

Antwort2

Für akademische Zwecke würde dies einem Befehl 1.000 Eingabedateien in Schritten von 1.024 Bytes geben, indem er sie an dieselbe Datei anhängt.

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

Aber ... Versuch und Irrtum? Ich würde einen besseren Weg finden.

verwandte Informationen