Come posso popolare un file con dati casuali?


124

Come posso creare un nuovo file e riempirlo con dati casuali del valore di 1 Gigabyte? Ho bisogno di questo per testare alcuni software.

Preferirei usare /dev/randomo /dev/urandom.


74
Apri vicon vi -w randomfilee chiedi a qualcuno che non ha mai visto vidi uscire dal programma. ;)
Wildcard l'

1
Appena arrivato mi piace il commento sopra dal post di Facebook! facebook.com/ProgrammersCreateLife/photos/a.241809332534619/…
Parixit

Risposte:


171

Sulla maggior parte dei Unix:

head -c 1G </dev/urandom >myfile

Se il tuo headnon capisce il Gsuffisso, puoi specificare la dimensione in byte:

head -c 1073741824 </dev/urandom >myfile

Se il tuo headnon capisce l' -copzione (è comune ma non POSIX; probabilmente hai OpenBSD):

dd bs=1024 count=1048576 </dev/urandom >myfile

Non usare /dev/randomsu Linux, usare /dev/urandom.


1
Per quello che vale, headnon capisco -csulla mia macchina Solaris 10.
Rahmu,

2
Interessante che headsa leggere /dev/urandom, ma tailnon può.
Stefan Lasiewski,

22
@StefanLasiewski tailprima prova ad andare alla fine del file di input, che impiega un'eternità (letteralmente).
Gilles,

Ah, come 'tail / dev / infinity`, se esistesse un tale dispositivo.
Stefan Lasiewski,

3
@StefanLasiewski Anche tu /dev/zero, se non ti piace la varietà.
Gilles,

35

Supponendo che i dati pseudo-casuali siano sufficienti, dd if=/dev/urandom of=target-file bs=1M count=1000farà quello che vuoi.

dd (1) leggerà blocchi di dati da un file di input e li scriverà in un file di output. Il linguaggio della riga di comando è un po 'strano, ma è uno di quegli strumenti davvero utili di cui vale la pena padroneggiare le basi.

In questo caso ifè il file di input, ofè il file di output, bsè "dimensione blocco" - e ho usato l'estensione GNU per impostare le dimensioni in modo più conveniente. (Puoi anche usare 1048576 se il tuo ddnon ha estensione GNU.) countÈ il numero di blocchi da cui leggere ife scrivere of.

/dev/urandomè una scelta migliore rispetto a quella che /dev/random, su Linux, ricadrà su dati pseudo casuali piuttosto che bloccarsi quando i dati autenticamente casuali sono esauriti.

Potresti anche voler guardare http://www.random.org/ come un altro percorso per ottenere alcuni dati casuali senza doverli generare da soli.


3
Nota: le specifiche dell'unità 1Mnon sono disponibili in tutte le ddvarianti standard . Se la tua versione di ddè interessata, usa bs=1048576.
Chris Down

4
Il comando di esempio creerà un file di conteggio 1.000.000 di blocchi di dimensioni pari a 1 MB ciascuno. Sono circa 1 TB (1 MB x 1 MB), non 1 GB (che sarebbe 1 KB x 1 MB). A parte questo, fino a un certo punto, aumentare la dimensione del blocco e ridurre il conteggio dei blocchi tende a produrre un throughput migliore per una determinata quantità di dati di output.
un CVn

2
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee  5000kb

Usato per generare dati di carattere casuale di 5 MB. Se hai bisogno di dimensioni diverse, cambia il -cvalore di head, cambia il nome del file, esegui e attendi il completamento dell'esecuzione.

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.