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

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

J'utilise le shell bash et je voudrais faire passer la sortie de la commande openssl rand -base64 1000 à la commande dd comme dd if={output of openssl} of="sample.txt bs=1G count=1. Je pense que je peux utiliser des variables mais je ne sais pas comment le faire au mieux. La raison pour laquelle j'aimerais créer le fichier est que je voudrais un fichier de 1 Go avec du texte aléatoire.

Réponses (4)

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

Le if= n'est pas nécessaire, vous pouvez mettre quelque chose dans le dd à la place :

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

Il ne serait pas utile ici puisque le openssl rand nécessite de toute façon de spécifier le nombre d'octets. Vous n'avez donc pas vraiment besoin de dd - cela fonctionnerait :

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

1 gigaoctet équivaut généralement à 230 octets (bien que vous puissiez utiliser 10**9 pour 109 octets à la place). La partie * 3/4 représente le surdébit de Base64, ce qui fait que la sortie codée est de 1 Go.

Alternativement, vous pourriez utiliser /dev/urandom, mais ce serait un peu plus lent qu'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
26
26
26
2015-05-21 14:52:41 +0000

Créer un fichier de contenu aléatoire 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

Si vous voulez EXACTEMENT 1 Go, vous pouvez utiliser les commandes suivantes :

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

La commande openssl rend un fichier exactement 1 octet trop gros. La commande truncate supprime cet octet.

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

Essayez ce script.

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

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

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