125 votes

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

J'utilise la commande bash Shell et je voudrais envoyer 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 pouvoir utiliser des variables, mais je ne suis pas sûr de la meilleure façon de le faire. La raison pour laquelle je voudrais créer le fichier est que je voudrais un fichier de 1 Go avec du texte aléatoire.

186voto

James Mertz Points 390

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

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

something... | head -c 1G > sample.txt

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

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

1 gigaoctet correspond généralement à 2 30 octets (bien que vous puissiez utiliser 10**9 pour 10 9 octets à la place). Le site * 3/4 tient compte de la surcharge de la base 64, ce qui fait de la encodé sortie 1 GB.

Alternativement, vous pouvez utiliser /dev/urandom mais il serait un peu plus lent qu'OpenSSL :

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

J'utiliserais bs=64M count=16 ou similaire, pour que 'dd' n'essaie pas d'utiliser tout le 1 Go de RAM en une seule fois :

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

ou même le plus simple head outil - vous n'avez pas vraiment besoin de dd ici :

head -c 1G /dev/urandom > sample.txt

45voto

anneb Points 1064

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

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

4voto

Joel Jacobs Points 31

Si vous voulez EXACTEMENT 1GB, alors vous pouvez utiliser ce qui suit :

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

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

3voto

Binita Bharati Points 131

Puisque votre objectif est de créer un fichier de 1 Go avec un contenu aléatoire, vous pouvez également utiliser la méthode suivante yes au lieu de dd :

yes [text or string] | head -c [size of file] > [name of file]

Exemple d'utilisation :

yes this is test file | head -c 100KB > test.file

3voto

Kara Points 2333

Si vous avez simplement besoin d'un fichier quelque peu aléatoire qui est pas utilisé pour des choses liées à la sécurité comme l'analyse comparative de quelque chose, alors la suite sera beaucoup plus rapide :

truncate --size 1G foo
shred --iterations 1 foo

C'est également plus pratique car vous pouvez simplement spécifier la taille directement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X