web-dev-qa-db-fra.com

Comment créer un fichier aléatoire de 1 Go sous Linux?

J'utilise le shell bash et aimerais diriger la sortie de la commande openssl Rand -base64 1000 vers la commande dd telle que dd if={output of openssl} of="sample.txt bs=1G count=1. Je pense que je peux utiliser des variables mais je ne suis cependant pas sûr de la meilleure façon de le faire. La raison pour laquelle je voudrais créer le fichier est parce que je voudrais un fichier de 1 Go avec du texte aléatoire.

81
PeanutsMonkey

if= n'est pas obligatoire, vous pouvez diriger quelque chose dans dd à la place:

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

Cela ne serait pas utile ici puisque openssl Rand nécessite de toute façon de spécifier le nombre d'octets. Donc vous n’avez pas besoin de dd - this fonctionnerait:

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

1 gigaoctet est généralement 230 octets (bien que vous puissiez utiliser 10**9 pendant 109 octets à la place). La partie * 3/4 représente les frais généraux Base64, ce qui donne 1 Go à encoded .

Vous pouvez également utiliser /dev/urandom, mais ce serait un peu plus lent que OpenSSL:

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

Personnellement, j'utiliserais bs=64M count=16 ou similaire:

dd if=/dev/urandom of=sample.txt bs=64M count=16
120
grawity

Créez un fichier de contenu aléatoire de 1GB.bin:

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

22
anneb

Essayez ce script.

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

Ce script peut fonctionner aussi longtemps que cela ne vous dérange pas d'utiliser /dev/random.

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

Si vous voulez EXACTEMENT 1 Go, vous pouvez utiliser les éléments suivants:

openssl Rand -out $ testfile -base64 792917038; tronquer -s-1 $ testfile

La commande openssl rend un fichier exactement 1 octet trop grand. La commande tronquer supprime cet octet.

0
Joel Jacobs