Outils pour utilisateurs

Outils du site


informatique:linux:dd

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
informatique:linux:dd [2008/07/22 13:45]
benoit
informatique:linux:dd [2018/09/06 19:10] (Version actuelle)
Ligne 157: Ligne 157:
  
 pour le rendre exécutable. ​ pour le rendre exécutable. ​
 +
  
  
Ligne 175: Ligne 176:
   dd if=/​home/​sam/​insert.iso of=/dev/sdb ibs=4b obs=1b conv=notrunc,​noerror   dd if=/​home/​sam/​insert.iso of=/dev/sdb ibs=4b obs=1b conv=notrunc,​noerror
  
-Maintenant modifiez le BIOS pour booter sur l'USB, connectez la clé et bootez la machine. ​+Maintenant modifiez le BIOS pour booter sur l'USB, connectez la clé et bootez la machine
 + 
 + 
 +===== Copier seulement le MBR d'un disque dur ===== 
 + 
 +  dd if=/dev/sda of=/​home/​sam/​MBR.image bs=446 count=1 
 + 
 +Ceci copiera les 446 premiers octets du disque dur dans un fichier. 
 + 
 +:!: Attention ! Si vous ne l'avez pas encore deviné, intervertir les arguments de if= et of=, dans la ligne de commande de dd intervertit le sens de l'​écriture !  
 + 
 + 
 + 
 +===== Sauvegarde de tout le disque ===== 
 +sur  deux disque complètement identiques. Avant de faire quelque chose qui pourrait être dangereux, démarrer à partir dd'un live CD et lancer : 
 + 
 +  dcfldd ​  ​if=/​dev/​sda ​   of=/​dev/​sdb/ ​ bs=4096 ​ conv=notrunc,​noerror 
 + 
 +(vous pouvez utiliser dd à la place de dcfldd) on copie ici ainsi le lecteur système de travail courant sur le lecteur sdb. Si l'​installation est cassée sur sda, démarrer à partir dd'un live CD et lancer : 
 + 
 +  dcfldd if=/​dev/​sdb ​ of=/​dev/​sda ​ bs =4096 conv=notrunc,​noerror 
 + 
 +Notez bien que bs=4096 marche plus rapidement pour des machines ayant au moins 128Mo de RAM. dd utilise pas mal de tampons (buffers). Avec bs=4096, sur des machines modernes, la vitesse de transfert optimal pour les disques durs est atteinte.  
 + 
 + 
 +===== Effacer toutes les données d'un disque dur ===== 
 + 
 +Vous devrez booter depuis un CD pour cela, http://​www.efense.com/​helix est un bon CD de boot (mais il y en a bien d'​autres !). L'​environnement de boot helix contient la version DoD de dd appelée dcfldd. Elle fonctionne de la même manière que dd, mais possède une barre de progression. 
 + 
 +  dcfldd if=/​dev/​zero of=/dev/sda conv=notrunc 
 + 
 +Ceci est très utile pour rendre le lecteur presque comme neuf, cela permet de le débarrasser des virus, des chevaux de Troie etc... La plupart des lecteurs ont 0x0000ffh écrit en usine dans chaque secteur. 
 + 
 + 
 +===== Ecrire par dessus toute la place libre d'une partition ===== 
 + 
 +C'est à dire rendre impossible la récupération des fichiers effacés. 
 + 
 +  dd if=/​dev/​urandom > fichieroccupanttoutlespacelibre 
 + 
 +Quand dd dit : « plus d'​espace libre sur le périphérique », tout l'​espace disponible a été réécrit avec des caractères aléatoires. Ensuite, effacez le gros fichier avec : 
 + 
 +  rm 
 + 
 + 
 + 
 + 
 +===== Créer un disque de sauvegarde ===== 
 + 
 +Nota Bene : Dans les commandes qui suivent, dcfldd peut être remplacé par dd (dcfldd est un programme qui ajoute aux fonctionnalités de dd l'​affichage d'une barre de progression). 
 + 
 +Je place deux disques identiques dans chacune de mes machines. Avant de faire toute chose pouvant être désastreuse,​ je fais : 
 + 
 +  dcfldd if=/dev/sda of=/dev/sdb bs=4096 conv=notrunc,​noerror 
 + 
 +et copie mon disque de travail en cours sda vers le disque sdb. Si je détruis l'​installation sur sda, je n'ai qu'à booter avec le CD helix et : 
 + 
 +  dcfldd if=/dev/sdb of=/dev/sda bs=4096 conv=notrunc,​noerror 
 + 
 +et je retrouve chaque chose exactement comme avant qu'un truc idiot que j'​essayais de faire ne fonctionne pas. Vous pouvez vraiment, vraiment apprendre Linux de cette manière, car vous ne pouvez absolument pas casser ce dont vous avez une copie exacte. Vous pourriez aussi envisager de faire une partition root séparée de /home, et rendre /home assez grand pour contenir la partition root, Vous pouvez alors faire : 
 + 
 +  dd if=/​dev/​sda2 (root) of=/​home/​sam/​root.img bs=4096 conv=notrunc,​noerror 
 + 
 +pour réaliser un backup de root puis : 
 + 
 +  dd if=/​home/​sam/​root.img of=/​dev/​sda2 (root) bs=4096 conv=notrunc,​noerror 
 + 
 +pour remettre l'​image de root dans la partition root si vous avez semé la pagaille et ne pouvez plus lancer le serveur X, ou éditer /etc/fstab, et ne trouvez pas ce que vous avez fait de mal. Cela ne prend que quelques minutes pour restaurer une partition root de 15 Go depuis un fichier image.  
 + 
 + 
 + 
 +===== Créer un fichier de 100 octets aléatoires ===== 
 + 
 +  dd if=/​dev/​urandom of=/​home/​sam/​mes_octets_aleatoires bs=1 count=100 
 + 
 +Ici urandom est un générateur Linux de nombres aléatoires. mes_octets_aleatoires est un fichier. 
 +La taille de bloc est égale à 1 octet (bs=1) et on envoie 100 blocs, donc au total 100 octets (count=100). 
 + 
 +gpg a besoin d'une graine (seed) aléatoire pour créer des clés. Créer un fichier de, disons, 4096 octets aléatoires,​ qu'on peut passer à gpg, permettra d'​avoir une graine vraiment aléatoire. 
 + 
 + 
 +/dev/random génère autant de bits aléatoires que la réserve entropique peut en contenir. Cela produit des valeurs hautement aléatoires pour des clés de cryptographie. Si davantage d'​octets aléatoires sont nécessaires,​ le processus s'​arrête jusqu'​à ce que la réserve entropique soit remplie de nouveau (bouger la souris aide). /​dev/​urandom n'a pas cette restriction. Si l'​utilisateur exige plus de bits que de présents à ce moment dans la réserve entropique, ils sont produits en utilisant un générateur de nombres pseudo-aléatoires.  
 + 
 + 
 +===== Ecrire des données aléatoires par dessus un fichier avant de l'​effacer ==== 
 + 
 +d'​abord,​ faire : 
 + 
 +  ls -l 
 + 
 +pour trouver la taille du fichier : 
 + 
 +  ls -l unfichier 
 +  -rw------- ... 3769 Nov 2 13:41 <​filename>​ 
 + 
 +dans ce cas elle est de 3769. 
 + 
 +  dd if=/​dev/​urandom of=unfichier bs=3769 count=1 conv=notrunc 
 + 
 +Ceci écrira des caractères aléatoires par dessus la totalité du fichier . 
 + 
 +Ainsi même quelqu'​un qui inspectera le contenu du disque avec dd ne retrouvera pas son contenu.  
 + 
 +===== Créer un fichier volumineux ne prenant aucun espace disque ===== 
 +Pour créer un fichier de 50 Mo prenant 0 octets sur le disque lancer la commande : 
 +  dd if=/​dev/​null of=file bs=1M seek=50 
 + 
 +Cette commande peut être utile pour créer un gros fichier pour tester un transfert FTP. 
 + 
 +===== Copier une partition de disque dans un fichier placé sur une partition différente ===== 
 + 
 +Attention!! Ne pas copier une partition sur la même partition. 
 + 
 +  dd if=/​dev/​sdb2 of=/​home/​sam/​partition.image bs=4096 conv=notrunc,​noerror 
 + 
 +Cela créera un fichier qui est l'​exacte réplique de la partition sdb2. Vous pouvez remplacer par hdb, sda, hda ou toute autre désignation de votre disque. Ou : 
 + 
 +  dd if=/​dev/​sdb2 ibs=4096 | gzip > partition.image.gz conv=noerror 
 + 
 +Crée une archive gzip de la partition complète. Pour la restauration,​ utiliser : 
 + 
 +  | gunzip > 
 + 
 +Pour bzip2 (plus lent, plus petit), remplacer par bzip2 et bunzip2, et nommer le fichier 
 + 
 +  .bz2 
 + 
 + 
 +===== Restaurer une partition de disque depuis un fichier image ==== 
 + 
 +  dd if=/​home/​sam/​partition.image of=/​dev/​sdb2 bs=4096 conv=notrunc,​noerror 
 + 
 +De cette façon, vous pouvez avoir un grand disque dur et le partitionner,​ ainsi vous pouvez sauvegarder votre partition root. Si vous semez la pagaille dans votre partition root, vous n'avez qu'à booter depuis le CD helix (ou un live CD quelconque) et restaurer l'​image.  
 + 
 + 
 +===== Convertir un fichier tout en caractères majuscules ===== 
 + 
 +  dd if=filename of=filename conv=ucase 
 + 
 + 
 + 
 +===== Créer un lecteur virtuel ===== 
 + 
 +Le noyau Linux crée généralement nombre de disques virtuels que vous pouvez transformer en lecteurs virtuels. Vous devez d'​abord remplir le lecteur avec des zéros comme ceci : 
 + 
 +  dd if=/​dev/​zero of=/​dev/​ram7 bs=1k count=16384 
 + 
 +ce qui crée un disque virtuel de 16 Mo plein de zéros... 
 + 
 +Ensuite : 
 + 
 +  mkfs.ext3 -m0 /dev/ram7 4096 
 + 
 +place un système de fichiers sur le disque virtuel le transformant en lecteur virtuel. 
 + 
 +  debian:/​home/​sam # hdparm -t /dev/ram7 
 +  /dev/ram7: Timing buffered disk reads: 16 MB in 0.02 seconds = 913.92 MB/sec 
 +  (Débit de lecture du disque bufférisé:​ 16Mo en 0,02 secondes= 913,92 Mo/s) 
 + 
 +Vous pouvez êtes tenté de ne mesurer le débit qu'une fois. Mais, en fait, il vaut mieux lancer plusieurs fois hdparm -t /dev/ram7, car hdparm est un peu difficile avec les lecteurs virtuels. 
 + 
 +Vous pouvez monter le disque virtuel avec : 
 + 
 +  mkdir /mnt/mem  
 +  mount   /​dev/​ram7 /mnt/mem 
 + 
 +Maintenant, vous pouvez utiliser le lecteur virtuel comme un lecteur matériel. Ceci est particulièrement remarquable pour travailler sur des gros documents ou en programmation. Vous pouvez copier le gros document ou le projet de programmation sur le lecteur virtuel, lequel sur ma machine est au moins 27 fois aussi rapide que /dev/sda, et chaque fois que vous enregistrez l'​énorme document, ou que vous avez besoin de compiler, c'est comme si votre machine carburait au nitrométhane. La seule chose est que le lecteur virtuel est volatile. Si vous perdez l'​alimentation,​ ou éteignez, les données sur le lecteur virtuel sont perdues. Utilisez une machine fiable, par temps clair, si vous utilisez un lecteur virtuel. 
 + 
 +===== Copier la mémoire RAM dans un fichier ===== 
 + 
 +  dd if=/dev/mem of=/​home/​sam/​mem.bin bs=1024 
 + 
 +Le périphérique : 
 + 
 +  /dev/mem 
 + 
 +est votre mémoire système. Vous pouvez en fait copier tout périphérique de type bloc ou caractère dans un fichier avec dd
informatique/linux/dd.1216727131.txt.gz · Dernière modification: 2018/09/06 18:59 (modification externe)