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

Wie erstelle ich unter Linux eine Zufallsdatei von 1 GB?

Ich verwende die Bash-Shell und möchte den out-Befehl openssl rand -base64 1000 über eine Pipe an den Befehl dd übergeben, wie z.B. dd if={output of openssl} of="sample.txt bs=1G count=1. Ich denke, dass ich Variablen verwenden kann, aber ich bin mir nicht sicher, wie ich das am besten mache. Der Grund, warum ich die Datei erstellen möchte, ist, dass ich eine 1GB-Datei mit zufälligem Text haben möchte.

Antworten (4)

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

if= nicht erforderlich ist, können Sie stattdessen etwas in dd pipen:

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

Es wäre hier nicht sinnvoll, da openssl rand ohnehin die Angabe der Anzahl der Bytes erfordert. Sie brauchen also eigentlich nicht dd - das würde funktionieren:

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

1 Gigabyte sind normalerweise 230 Bytes (obwohl Sie stattdessen 10**9 für 109 Bytes verwenden können). Der * 3/4-Teil macht den Base64-Overhead aus, so dass die codierte Ausgabe 1 GB beträgt.

Alternativ könnten Sie /dev/urandom verwenden, aber das wäre etwas langsamer als OpenSSL:

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

Persönlich würde ich bs=64M count=16 oder ähnlich verwenden:

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

Erstellen Sie eine Zufallsinhaltsdatei 1GB.bin:

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

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

Wenn Sie GENAU 1 GB wünschen, können Sie Folgendes verwenden:

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

Der Befehl openssl macht eine Datei genau 1 Byte zu groß. Der Befehl truncate schneidet dieses Byte ab.

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

Probieren Sie dieses Skript aus.

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

Dieses Skript könnte funktionieren, solange es Ihnen nichts ausmacht, /dev/random zu verwenden.

#!/bin/bash
dd if=/dev/random of="sample.txt bs=1G count=1"