Come posso creare rapidamente un file di grandi dimensioni?


26

Qual è un modo semplice e veloce per creare un file di dimensioni pari, ad esempio, a 2 GB?

Risposte:


36

Il metodo di riempimento zero (qui modificato per evitare potenziali colli di bottiglia della memoria ) ha impiegato 17 secondi per creare un file da 10 GB su un SSD e ha reso l'interfaccia di Ubuntu non rispondente.

$ 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 crea file di grandi dimensioni istantaneamente manipolando direttamente lo spazio su disco allocato del file:

$ 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

truncate funziona anche all'istante e crea file sparsi che non consumano spazio su disco effettivo fino a quando i dati non vengono scritti in seguito:

$ 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=1legge 2 GB in memoria (in una read(2)chiamata). Se hai la pressione della memoria non è probabilmente la strada da percorrere. Più blocchi più piccoli possono essere più veloci se ciò significa meno paginazione.
— Claymation

19

Un modo semplice sarebbe usare il ddcomando per scrivere un file pieno di zeri.

dd if=/dev/zero of=outputFile bs=2G count=1
  • if = file di input
  • di = file di output
  • bs = byte

Usa G nell'argomento size se vuoi gigabyte di computer (1024 * 1024 * 1024) o GB se vuoi gigabyte umani (1000 * 1000 * 1000).


1
aggiungerò semplicemente che se non vuoi tutti gli zeri, puoi scegliere se = / dev / random
— Denwerko

Anche se / dev / random richiederà più tempo.
— con-f-use

10
Usando / dev / random avrà un terribile sacco di tempo. Utilizzare /dev/urandomin quel caso (non è bloccante, ma non è garantito che abbia lo stesso livello di casualità). L'estrazione di 2 GB da uno dei due esaurirà quasi sicuramente l'entropia del tuo sistema, quindi non fare nulla di crittografico per un po 'di tempo dopo.
— un CVn del

1

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

oppure Cerca è la dimensione del file desiderato in byte - 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.