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

J'utilise le shell bash et j'aimerais échapper à la commande openssl rand -base64 1000 à la commande dd comme dd if={output of openssl} of="sample.txt bs=1G count=1 Je pense Je peux utiliser des variables, mais je suis cependant incertain sur 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.

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

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

Il ne serait pas utile ici car openssl rand nécessite de spécifier le nombre d'octets de toute façon. Donc, vous n'avez pas besoin de ddcela fonctionnerait:

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

1 gigabyte est généralement de 2 30 octets (bien que vous puissiez utiliser 10**9 pour 10 9 octets à la place). La partie * 3/4 regroupe les frais généraux de Base64, ce qui rend la sortie codée de 1 Go.

Alternativement, vous pouvez 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 

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

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

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" 

Si vous souhaitez EXACTEMENT 1 Go, vous pouvez utiliser ce qui suit:

Openssl rand -out $ testfile -base64 792917038; Truncate -s-1 $ testfile

La commande openssl rend un fichier exactement 1 octet trop grand. La commande tronquée coupe ce décalage.