2012-09-06 18:03:06 +0000 2012-09-06 18:03:06 +0000
91
91

Come si crea un file casuale da 1GB in Linux?

Sto usando la shell bash e vorrei passare dal comando openssl rand -base64 1000 al comando dd come dd if={output of openssl} of="sample.txt bs=1G count=1. Penso di poter usare le variabili, ma non sono sicuro di come farlo al meglio. Il motivo per cui vorrei creare il file è che vorrei un file da 1GB con testo casuale.

Risposte (4)

139
139
139
2012-09-06 18:17:14 +0000

if= non è richiesto, si può invece inserire qualcosa in dd:

something... | dd of=sample.txt bs=1G count=1

Non sarebbe utile in questo caso perché openssl rand richiede comunque di specificare il numero di byte. Quindi non è necessario dd - questo funzionerebbe:

openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 ))

1 gigabyte è di solito 230 byte (anche se si può usare 10**9 per 109 byte). La parte * 3/4 rappresenta l'overhead di Base64, rendendo l'uscita codificata 1 GB.

In alternativa, si potrebbe usare /dev/urandom, ma sarebbe un po’ più lento di OpenSSL:

dd if=/dev/urandom of=sample.txt bs=1G count=1

Personalmente, userei bs=64M count=16 o simili:

dd if=/dev/urandom of=sample.txt bs=64M count=16
26
26
26
2015-05-21 14:52:41 +0000

Creare un file di contenuto casuale 1GB.bin:

dd if=/dev/urandom di=1GB.bin bs=64M count=16 iflag=fullblock

2
2
2
2017-07-06 21:48:13 +0000

Se si desidera ESATTAMENTE 1GB, allora si può usare il seguente:

openssl rand -out $testfile -base64 792917038; troncate -s-1 $testfile

Il comando openssl rende un file esattamente 1 byte troppo grande. Il comando truncate taglia via quel byte.

-1
-1
-1
2012-09-06 18:12:03 +0000

Prova questo script.

#!/bin/bash
openssl rand -base64 1000 | dd of=sample.txt bs=1G count=1
``` ```
#!/bin/bash
dd if=/dev/random of="sample.txt bs=1G count=1"

Questo script potrebbe funzionare finché non ti dispiace usare /dev/random.

&001