web-dev-qa-db-fra.com

Comment puis-je remplir un fichier avec des données aléatoires?

Comment puis-je créer un nouveau fichier et le remplir avec 1 gigaoctet de données aléatoires? J'en ai besoin pour tester des logiciels.

Je préfère utiliser /dev/random ou /dev/urandom.

145
Stefan Lasiewski

Sur la plupart des unités:

head -c 1G </dev/urandom >myfile

Si votre head ne comprend pas le suffixe G, vous pouvez spécifier la taille en octets:

head -c 1073741824 </dev/urandom >myfile

Si votre head ne comprend pas le -c option (c'est courant mais pas POSIX; vous avez probablement OpenBSD):

dd bs=1024 count=1048576 </dev/urandom >myfile

Ne pas utiliser /dev/random sous Linux, utilisez /dev/urandom.

En supposant que les données pseudo-aléatoires sont suffisantes, dd if=/dev/urandom of=target-file bs=1M count=1000 fera ce que vous voulez.

dd (1) lit les blocs de données d'un fichier d'entrée et les écrit dans un fichier de sortie. Le langage de ligne de commande est un peu excentrique, mais c'est l'un de ces outils vraiment utiles qui vaut la peine de maîtriser les bases de.

Dans ce cas, if est le fichier d'entrée, of est le fichier de sortie, bs est la "taille du bloc" - et j'ai utilisé l'extension GNU pour définir la taille plus facilement. (Vous pouvez également utiliser 1048576 si votre dd n'a pas GNU.) count est le nombre de blocs à lire depuis if et écrire dans of.

/dev/urandom est un meilleur choix que /dev/random parce que sous Linux, il retombera sur des données pseudo-aléatoires solides plutôt que de bloquer lorsque les données véritablement aléatoires seront épuisées.

Vous pouvez également considérer http://www.random.org/ comme un autre chemin pour obtenir des données aléatoires sans avoir à les générer vous-même.

37
Daniel Pittman
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee  5000kb

Utilisé pour générer des données de caractères aléatoires de 5 Mo. Si vous avez besoin d'une taille différente, modifiez le -c valeur de head, changez le nom du fichier de sortie, exécutez et attendez la fin de l'exécution.

2
James Jithin