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

Hoe maak ik een 1GB random bestand aan in Linux?

Ik gebruik de bash shell en wil graag de pijp van het commando openssl rand -base64 1000 naar het commando dd zoals dd if={output of openssl} of="sample.txt bs=1G count=1. Ik denk dat ik variabelen kan gebruiken, maar ik weet niet hoe ik dat het beste kan doen. De reden dat ik het bestand wil maken is omdat ik een 1GB bestand met willekeurige tekst wil hebben.

Antwoorden (4)

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

if= is niet nodig, je kunt in plaats daarvan iets in dd pijpen:

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

Het zou hier niet nuttig zijn omdat openssl rand toch het aantal bytes moet specificeren. Je hebt dus eigenlijk geen dd nodig - dit zou werken:

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

1 gigabyte is meestal 230 bytes (hoewel je 10**9 voor 109 bytes kunt gebruiken). Het * 3/4 gedeelte is verantwoordelijk voor Base64 overhead, waardoor de gecodeerde uitvoer 1 GB is.

Als alternatief zou je /dev/urandom kunnen gebruiken, maar het zou iets langzamer zijn dan OpenSSL:

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

Persoonlijk zou ik bs=64M count=16 of iets dergelijks gebruiken:

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

Maak een 1GB.bin random content bestand aan:

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

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

Als je EXACTLY 1GB wilt, dan kun je het volgende gebruiken:

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

Het openssl commando maakt een bestand precies 1 byte te groot. Het truncate commando trimt die byte uit.

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

Probeer dit script.

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

Dit script zou kunnen werken zolang je het niet erg vindt om /dev/random te gebruiken.

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