Die Zero-Fill-Methode (hier geändert, um mögliche Speicherengpässe zu vermeiden ) benötigte 17 Sekunden, um eine 10-GB-Datei auf einer SSD zu erstellen, und führte dazu, dass die grafische Oberfläche von Ubuntu nicht mehr reagierte.
$ time sh -c 'dd if=/dev/zero iflag=count_bytes count=10G bs=1M of=large; sync'
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 17.2003 s, 624 MB/s
real 0m17.642s
user 0m0.008s
sys 0m9.404s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
10737422336 large
fallocate erstellt sofort große Dateien, indem der zugewiesene Speicherplatz der Datei direkt geändert wird:
$ time sh -c 'fallocate -l 10G large; sync'
real 0m0.038s
user 0m0.000s
sys 0m0.016s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
10737422336 large
Das Abschneiden funktioniert auch sofort und erstellt spärliche Dateien , die erst dann Speicherplatz beanspruchen, wenn die Daten später geschrieben werden:
$ time sh -c 'truncate -s 10G large; sync'
real 0m0.014s
user 0m0.000s
sys 0m0.004s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
0 large
dd ... bs=2G count=1Liest 2 GB in den Speicher (in einem read(2)Aufruf). Wenn Sie Speicherdruck haben, ist das wahrscheinlich nicht der richtige Weg. Mehr, kleinere Blöcke können schneller sein, wenn es weniger Paging bedeutet.
Claymation
19
Eine einfache Möglichkeit wäre, mit dem ddBefehl eine Datei voller Nullen zu schreiben.
dd if=/dev/zero of=outputFile bs=2G count=1
if = Eingabedatei
of = Ausgabedatei
bs = bytes
Verwenden Sie G im Größenargument, wenn Sie Computer-Gigabytes (1024 * 1024 * 1024) oder GB Human-Gigabytes (1000 * 1000 * 1000) möchten.
Ich werde nur hinzufügen, dass, wenn Sie nicht alle Nullen wollen, Sie wählen können, ob = / dev / random
Denwerko
Obwohl / dev / random mehr Zeit in Anspruch nehmen wird.
con-f-use
10
Die Verwendung von / dev / random wird sehr viel Zeit in Anspruch nehmen . Verwenden Sie /dev/urandomin diesem Fall (es ist nicht blockierend, garantiert jedoch nicht die gleiche Zufälligkeit). Das Ziehen von 2 GB aus einem der beiden Formate erschöpft mit ziemlicher Sicherheit die Entropie Ihres Systems vollständig. Führen Sie anschließend eine Weile lang keine kryptografischen Schritte durch.
dd ... bs=2G count=1
Liest 2 GB in den Speicher (in einemread(2)
Aufruf). Wenn Sie Speicherdruck haben, ist das wahrscheinlich nicht der richtige Weg. Mehr, kleinere Blöcke können schneller sein, wenn es weniger Paging bedeutet.Eine einfache Möglichkeit wäre, mit dem
dd
Befehl eine Datei voller Nullen zu schreiben.Verwenden Sie G im Größenargument, wenn Sie Computer-Gigabytes (1024 * 1024 * 1024) oder GB Human-Gigabytes (1000 * 1000 * 1000) möchten.
quelle
/dev/urandom
in diesem Fall (es ist nicht blockierend, garantiert jedoch nicht die gleiche Zufälligkeit). Das Ziehen von 2 GB aus einem der beiden Formate erschöpft mit ziemlicher Sicherheit die Entropie Ihres Systems vollständig. Führen Sie anschließend eine Weile lang keine kryptografischen Schritte durch.ftp://ftp.fsf.hu/testfiles/maketestfiles.sh
oder Suche ist die Größe der gewünschten Datei in Bytes - 1.
quelle