it-swarm.com.de

Wie kann ich schnell eine große Datei erstellen?

Was ist eine schnelle und einfache Methode, um eine Datei mit einer Größe von beispielsweise 2 GB zu erstellen?

26
ændrük

Die Zero-Fill-Methode (hier geändert, um potenzielle 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 bearbeitet 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

abschneiden funktioniert auch sofort und erstellt spärliche Dateien , die erst dann Speicherplatz verbrauchen, wenn später Daten 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
36
ændrük

Eine einfache Möglichkeit wäre, mit dem Befehl dd eine Datei mit 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.

19
MikeVB

ftp://ftp.fsf.hu/testfiles/maketestfiles.sh

oder Suche ist die Größe der gewünschten Datei in Bytes - 1.

dd if=/dev/zero of=filename.big bs=1 count=1 seek=1048575 # 1 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=10485759 # 10 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=104857599 # 100 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=1073741823 # 1024 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=42949672959 # 40960 MByte
1
LanceBaynes