#1 Le 10/07/2010, à 14:29
- FlyingSkaarj
Créer un fichier d'une taille spécifique (Résolu)
Bonjour à tous,
Quelqu'un connaitrait-il un moyen de créer un fichier en spécifiant sa taille comme on peut le faire sous windows avec la commande fsutil ?
Dernière modification par FlyingSkaarj (Le 13/07/2010, à 19:22)
Hors ligne
#2 Le 10/07/2010, à 14:44
- ehmicky
Re : Créer un fichier d'une taille spécifique (Résolu)
Mettons pour créer un fichier de taille 357 octets :
- En remplissant de nulls (octet de valeur x00) le fichier :
cat /dev/zero | head -c 357 > monfichier
- En le remplissant de caractères aléatoires, mais imprimables (ponctuation, chiffres et lettres)
cat /dev/urandom | tr -dc [:graph:] | head -c 357 > monfichier
Dans le deuxième exemple, tu remplacer [:graph:] par [:punct:], [:alnum:], [:alpha:], [:digit:]... pour remplir de symboles de ponctuation, de chiffres ou lettres, de lettres, de chiffres, ...
Dernière modification par ehmicky (Le 10/07/2010, à 14:45)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#3 Le 10/07/2010, à 15:05
- credenhill
Re : Créer un fichier d'une taille spécifique (Résolu)
hello
avec dd
$ dd if=/dev/zero of=fichier bs=32767 count=1 2> /dev/null
$ ls -ln fichier
-rw-r--r-- 1 1000 1000 32767 2010-07-10 16:01 fichier
0n peut utiliser d'autres unités
man dd
...BLOCKS and BYTES may be followed by the following multiplicative suffixes: c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.
Dernière modification par credenhill (Le 10/07/2010, à 15:07)
Hors ligne
#4 Le 10/07/2010, à 15:24
- FlyingSkaarj
Re : Créer un fichier d'une taille spécifique (Résolu)
Merci infiniment ehmicky pour cette solution qui fonctionne à merveille ainsi que pour ta rapidité à me répondre.
Si je comprends bien on utilise une sorte de périphérique virtuel pour remplir le fichier ? Etant peu qualifié sous Linux, j'avoue avoir été surpris par cette commande.
Hors ligne
#5 Le 10/07/2010, à 15:48
- FlyingSkaarj
Re : Créer un fichier d'une taille spécifique (Résolu)
Merci egalement credenhill . J'ai déja utilisé dd pour cloner un disque mais je dois t'avouer que là je suis complètement noyé. je crois que je vais m'en tenir à cat (dont d'ailleurs je ne comprends que partiellement la commande). Toutefois, tout ceci va rejoindre la collection de documents éducatifs qui m'aident à progresser sous Linux.
Merci encore à tous.
Dernière modification par FlyingSkaarj (Le 10/07/2010, à 15:48)
Hors ligne
#6 Le 10/07/2010, à 16:12
- ehmicky
Re : Créer un fichier d'une taille spécifique (Résolu)
La solution de credenhill est meilleure, parce que dd est notamment conçu pour ce genre d'opérations, et il n'y a pas besoin de faire appel à deux redirections, cat et head alors que dd suffit.
Par contre, attention à cette commande qui si tu te trompes dans les arguments assignés à "if=" et "of=" peut supprimer de grosses parties de ton disque dur.
Pour l'explication de la premier commande :
- /dev/zero est un character device, un fichier spécial qui crée un flux ininterrompu de nulls.
- faire un cat /dev/zero va donc imprimer en sortie un flux de nulls. (Cat sert à imprimer le contenu d'un fichier)
- ce flux est pipé (= sa sortie est redirigée vers l'entrée de) vers head, qui avec l'option -c ne retient que les N premiers octets d'un fichier, ou en l'absence de fichier comme ici, lorsqu'il est pipé par exemple, de son entrée standard, soit ici le flux de nulls.
- ainsi N nulls sont imprimés, et ces nulls sont redirigés via "> FILE" vers FILE, qui est créé ou écrasé s'il existe déjà
Pour dd :
- tu spécifies le fichier d'entrée avec "if=FILE" (le fichier d'où les octets sont prélevés, ici /dev/zero)
- tu spécifies le fichier de sortie avec "of=FILE" (le fichier où ces octets sont imprimés)
- bs=NOMBRE1 et count=NOMBRE2 indique que NOMBRE1 fois NOMBRE2 octets seront imprimés, soit ici 32767 fois 1
Voir les man pages pour plus d'info
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#7 Le 11/07/2010, à 07:36
- credenhill
Re : Créer un fichier d'une taille spécifique (Résolu)
merci pour les explications
Par contre, attention à cette commande qui si tu te trompes dans les arguments assignés à "if=" et "of=" peut supprimer de grosses parties de ton disque dur.
c'est vrai si dd est utilisé en root avec sudo, sinon cette commande n'est pas plus "risquée" qu'une autre
Hors ligne
#8 Le 13/07/2010, à 19:21
- FlyingSkaarj
Re : Créer un fichier d'une taille spécifique (Résolu)
Messieurs, je vous tire mon chapeau et vous remercie encore pour la qualité de vos explications. C'est tout simplement magnifique à lire et à comprendre.
Je marque ce post comme résolu.
Hors ligne
#9 Le 14/07/2010, à 08:38
- credenhill
Re : Créer un fichier d'une taille spécifique (Résolu)
pour remplir le fichier d'un texte plutôt que de \0, on peut utiliser:
echo | awk '{for(;;)print "remplissage"}' | dd of=fichier bs=1M count=1 iflag=fullblock
Hors ligne