web-dev-qa-db-fra.com

Créer un fichier de grande taille en moins de temps

Je veux créer un fichier volumineux ~ 10G rempli de zéros et de valeurs aléatoires. J'ai essayé d'utiliser:

dd if=/dev/urandom of=10Gfile bs=5G count=10

Il crée un fichier d'environ 2 Go et se ferme avec un statut de sortie '0'. Je ne comprends pas pourquoi?

J'ai aussi essayé de créer un fichier en utilisant:

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

Il faut environ 28-30 minutes pour le créer. Mais je veux que ça soit créé plus vite. Quelqu'un a une solution?

Aussi, je souhaite créer plusieurs fichiers avec le même motif (pseudo) aléatoire pour comparaison. Est-ce que quelqu'un sait un moyen de faire ça?

17
skane

Et si vous utilisiez fallocate, cet outil nous permet de préallouer de l’espace pour un fichier (si le système de fichiers prend en charge cette fonctionnalité). Par exemple, en allouant 5 Go de données à un fichier appelé 'exemple', on peut faire:

fallocate -l 5G example

C'est beaucoup plus rapide que dd et allouera très rapidement l'espace.

12
Colin Ian King

Vous pouvez utiliser dd pour créer un fichier composé uniquement de zéros. Exemple:

dd if=/dev/zero of=zeros.img count=1 bs=1 seek=$((10 * 1024 * 1024 * 1024 - 1))

Ceci est très rapide car un seul octet est réellement écrit sur le disque physique. Cependant, certains systèmes de fichiers ne le supportent pas.

Si vous souhaitez créer un fichier contenant un contenu pseudo-aléatoire, exécutez:

dd if=/dev/urandom of=random.img count=1024 bs=10M

Je suggère que vous utilisiez 10M comme taille de tampon (bs). Cela est dû au fait que 10M n’est pas trop volumineux, mais il vous donne quand même une bonne taille de tampon. Cela devrait être assez rapide, mais cela dépend toujours de la vitesse de votre disque et de la puissance de traitement.

8
xiaodongjie

Avec dd, cela devrait créer un fichier de 10 Go contenant des données aléatoires:

dd if=/dev/urandom of=test1 bs=1M count=10240

count est en mégaoctets.

Source: stackoverflow - Comment créer un fichier avec une taille donnée sous Linux?

5
Alaa Ali

Répondant à la première partie de votre question:

Essayer d'écrire un tampon de 5 Go à la fois n'est pas une bonne idée car votre noyau ne le supporte probablement pas. Dans tous les cas, cela ne vous donnera aucun avantage en termes de performances Ecrire 1M à la fois est un bon maximum.

1
cprn