Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
ddrescue [Le 21/10/2019, 19:19] 37.167.154.44 [ddrescue par des exemples:Fabriquer les secteurs qui n'ont pas été copiés] |
ddrescue [Le 08/03/2020, 12:44] 37.171.3.0 [ddrescue par des exemples] Liste des blocs défectueux et enchainement simple |
||
---|---|---|---|
Ligne 62: | Ligne 62: | ||
Vous pouvez utiliser **[[apt>ddrescueview]]** pour suivre l'avancement de la sauvegarde de façon graphique. Le résultat est présenté sous la forme d'une grille de couleur à la manière des outils de défragmentation sous Windows. | Vous pouvez utiliser **[[apt>ddrescueview]]** pour suivre l'avancement de la sauvegarde de façon graphique. Le résultat est présenté sous la forme d'une grille de couleur à la manière des outils de défragmentation sous Windows. | ||
+ | |||
+ | ===== Principe de fonctionnement de ddrescue ===== | ||
+ | |||
+ | |||
+ | ddrescue fonctionne de la [[https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html#Algorithm | façon suivante]]: | ||
+ | |||
+ | - Si le fichier map est vide, dire que le traitement est à faire sur la totalité du support entrée, sinon récupérer ce qui a déjà été analysé. Ecrire régulièrement l’état de la récupération. | ||
+ | |||
+ | - Le premier passage lit la totalité du support d’entrée en faisant des demandes de lecture de taille très importante ( probablement plusieurs Mo). Si la lecture est possible, la duplication a lieu. Si cette lecture est impossible, la totalité des secteurs de cette zone est marquée « ignorée». Quel que soit le résultat, la grande zone suivante est alors traitée. Cela jusqu'à la fin du support entrée. | ||
+ | |||
+ | - Le second passage vérifie que les zones marquées "ignorée" sont peut-être devenues lisibles pour certaines d'entre elles en partant de la fin du support entrée (Cette phrase est à confirmer). | ||
+ | |||
+ | |||
+ | - Le troisième passage appelé rognage (Trimming) reprend chaque entité de taille très importante en traitant **secteur par secteur** (Secteur logique ? Secteur physique?). On traite le premier secteur : | ||
+ | * Si le secteur est lisible, il est dupliqué et le secteur suivant est lu. | ||
+ | * Si le secteur suivant est illisible, on traite le dernier secteur de l’entité. | ||
+ | * Si le dernier secteur est lisible , il est dupliqué et le secteur précédant est lu. | ||
+ | * Si le secteur précédant est illisible, on passe au traitement de l’entité suivante de grande taille. | ||
+ | |||
+ | - Le quatrième passage appelé grattage (Scraping) lit **chaque secteur** non encore dupliqué : | ||
+ | * Si le secteur est lisible, il est dupliqué et le secteur suivant est lu. | ||
+ | * Si le secteur est illisible, il est marqué défectueux et le secteur suivant est lu. | ||
+ | * Lorsque le dernier secteur est traité, l’opération est terminée. | ||
+ | |||
+ | - Cependant, un secteur considéré comme défectueux peut quelquefois être relu. Il est donc possible (souhaitable?) de redemander un certain nombre de fois l’exécution du quatrième passage. | ||
+ | Lorsque le dernier secteur est traité, l’opération de grattage continue en commençant par la fin pour se terminer au début, elle repart du début jusqu’à ce que le nombre de passages prévus soit atteint. Cependant il est possible d’interrompre l’exécution à tout instant si le taux de récupération est jugé insuffisant en appuyant sur les touches **Crtl C**. | ||
=====Utilisation===== | =====Utilisation===== | ||
Si le disque usagé est un disque assez classique, il peut être équipé de pas mal de partitions **dont une seule contient les données de l'utilisateur.** | Si le disque usagé est un disque assez classique, il peut être équipé de pas mal de partitions **dont une seule contient les données de l'utilisateur.** | ||
Ligne 141: | Ligne 167: | ||
<code bash>sudo ddrescue -d -f -R -r3 -b512 -c1 /dev/sda /dev/sde /home/ubuntu/dd/suivi | <code bash>sudo ddrescue -d -f -R -r3 -b512 -c1 /dev/sda /dev/sde /home/ubuntu/dd/suivi | ||
sudo ddrescue -d -f -R -r27 -b512 -c1 /dev/sda /dev/sde /home/ubuntu/dd/suivi</code> | sudo ddrescue -d -f -R -r27 -b512 -c1 /dev/sda /dev/sde /home/ubuntu/dd/suivi</code> | ||
+ | == Connaître la liste des blocs qui n'ont pas été copiés == | ||
+ | <code bash> touch /home/ubuntu/dd/badblocs | ||
+ | sudo ddrescuelog -l- -b512 /home/ubuntu/dd/suivi >/home/ubuntu/dd/badblocs</code> | ||
==Fabriquer les secteurs qui n'ont pas été copiés == | ==Fabriquer les secteurs qui n'ont pas été copiés == | ||
- Avec mise d'un commentaire personnel. | - Avec mise d'un commentaire personnel. | ||
Ligne 146: | Ligne 175: | ||
- ou avec écriture de zéros. | - ou avec écriture de zéros. | ||
<code bash>ddrescue --fill-mode=- --force --synchronous /dev/zero /dev/sde /home/ubuntu/dd/suivi</code> | <code bash>ddrescue --fill-mode=- --force --synchronous /dev/zero /dev/sde /home/ubuntu/dd/suivi</code> | ||
+ | |||
=== Sauvegarde d'une partition dans une partition avec un livecdrom === | === Sauvegarde d'une partition dans une partition avec un livecdrom === | ||
Ligne 158: | Ligne 188: | ||
== Faire la copie des secteurs endommagés == | == Faire la copie des secteurs endommagés == | ||
<code bash>sudo ddrescue -d -f -R -r27 -b4096 -c1 /dev/sda6 /dev/sde2 /media/ubuntu/dd/suivi6</code> | <code bash>sudo ddrescue -d -f -R -r27 -b4096 -c1 /dev/sda6 /dev/sde2 /media/ubuntu/dd/suivi6</code> | ||
+ | == Connaître la liste des blocs qui n'ont pas été copiés == | ||
+ | <code bash> touch /media/ubuntu/dd/badblocs6 | ||
+ | sudo ddrescuelog -l- -b4096 /media/ubuntu/dd/suivi6 >/media/ubuntu/dd/badblocs6</code> | ||
== Fabriquer les secteurs qui n'ont pas été copiés == | == Fabriquer les secteurs qui n'ont pas été copiés == | ||
- Avec mise d'un commentaire personnel. | - Avec mise d'un commentaire personnel. | ||
- | <code bash>ddrescue --fill-mode=- <(printf "SECTEUR ILLISIBLE On va marquer au fer rouge tous ces secteurs faussement défectueux afin de rechercher dans les fichiers ceux qui sont impactés par SECTEUR ILLISIBLE") --force /dev/sde2 /home/ubuntu/dd/suivi </code> | + | <code bash>ddrescue --fill-mode=- <(printf "SECTEUR ILLISIBLE On va marquer au fer rouge tous ces secteurs faussement défectueux afin de rechercher dans les fichiers ceux qui sont impactés par SECTEUR ILLISIBLE") --force /dev/sde2 /media/ubuntu/dd/suivi6 </code> |
- ou avec écriture de zéros. | - ou avec écriture de zéros. | ||
<code>ddrescue --fill-mode=- --force --synchronous /dev/zero /dev/sde2 /media/ubuntu/dd/suivi6</code> | <code>ddrescue --fill-mode=- --force --synchronous /dev/zero /dev/sde2 /media/ubuntu/dd/suivi6</code> | ||
- | === Copier dans un fichier === | + | === Copier une partition dans un fichier === |
- | <code bash>sudo ddrescue -b 512 --sparse --log-rates=/mnt/rescueRate.log /dev/disk/by-id/ata-MAXTOR_STM3160215A_9RA8V0BK-part1 /mnt/disk.img /mnt/rescue.map</code> | + | <code bash>sudo ddrescue -b 512 --log-rates=/mnt/rescueRate.log /dev/disk/by-id/ata-MAXTOR_STM3160215A_9RA8V0BK-part1 /mnt/disk.img /mnt/rescue.map</code> |
+ | === copier un support entier dans un fichier et le relire === | ||
+ | <code bash>sudo ddrescue -f -p /dev/sdb SDB.img SDB.log | ||
+ | sudo sfdisk -lV SDB.img | ||
+ | sudo losetup -P -v -f SDB.img | ||
+ | lsblk | grep loop | ||
+ | sudo mount /dev/loop123 /mnt | ||
+ | ls /mnt</code> | ||
===== Remarques concernant le forçage en écriture des secteurs qui n'ont pas pu être copiés. ===== | ===== Remarques concernant le forçage en écriture des secteurs qui n'ont pas pu être copiés. ===== | ||
Ces secteurs du support de sortie contiennent donc des informations sans rapport avec le support d'entrée. | Ces secteurs du support de sortie contiennent donc des informations sans rapport avec le support d'entrée. | ||
Ligne 213: | Ligne 254: | ||
* wc sdb2.files | * wc sdb2.files | ||
+ | ==== Connaître les fichiers stockés dans une partition NTFS impactés par les blocs défectueux. ==== | ||
+ | Pour obtenir la liste des fichiers qui sont encore corrompus, il est nécessaire d'avoir récupéré en totalité le répertoire des noms de fichiers. La première action à faire est de s'assurer que ce répertoire est en bon état. Cette action peut se faire pendant la dernière phase de récupération lorsque les tentatives de récupération deviennent de plus en plus longues. La commande suivante doit se terminer sans signaler d'erreurs. | ||
+ | <code bash>sudo ntfsfix -n -b -d <nom_partition_cible></code> | ||
+ | Si cette commande répond que la structure des répertoires est en mauvais état, il faut retenter de récupérer des secteurs illisibles. Sinon, on peut obtenir la liste des fichiers non totalement récupérés avec ces commandes | ||
+ | <code bash>sudo apt install ddrutility | ||
+ | sudo ddru_ntfsfindbad -V <nom_partition_cible> <chemin_fichier_log> </code> | ||
+ | Le retour de cette liste permettra de savoir s'il est souhaitable de continuer la récupération. | ||
===== Suivi de l'exécution de DDRESCUE ===== | ===== Suivi de l'exécution de DDRESCUE ===== | ||
+ | ==== Sur l'écran de la session terminal en exécution ==== | ||
+ | |||
Pendant toute la durée de l'exécution, une grille permettant un suivi est affichée. | Pendant toute la durée de l'exécution, une grille permettant un suivi est affichée. | ||
- | Il est possible de la mettre dans la discussion en cours avec la technique copier/coller | + | Il n'est pas possible de la mettre dans la discussion en cours avec la technique copier/coller puisque la grille se met à jour régulièrement. Il est nécessaire de tuer le process pour en effectuer une capture! |
<code>GNU ddrescue 1.22 | <code>GNU ddrescue 1.22 | ||
Press Ctrl-C to interrupt | Press Ctrl-C to interrupt | ||
Ligne 245: | Ligne 295: | ||
**Scraping failed blocks... (forwards)** Type d'action actuellement en cours. Evolue en fonction de l'avancement de la récupération. Dans ce cas, on est à l'étape de lecture des blocs qui n'ont pas été lus lors du premier passage rapide. | **Scraping failed blocks... (forwards)** Type d'action actuellement en cours. Evolue en fonction de l'avancement de la récupération. Dans ce cas, on est à l'étape de lecture des blocs qui n'ont pas été lus lors du premier passage rapide. | ||
+ | ==== Sur l'écran d'une autre session terminal ==== | ||
+ | |||
+ | Il est possible de transmettre facilement, l'état d'exécution dans une discussion du forum en demandant un extrait du fichier de suivi avec cette commande | ||
+ | <code bash>ddrescuelog -tvv <nom_fichier_journal> </code> | ||
+ | Il est possible de connaitre la liste exhaustive de numéros de secteurs non encore récupérés (à ne pas faire pendant le premier passage) avec cette commande | ||
+ | d<code bash>drescuelog -l- <nom_fichier_journal></code> | ||
===== Pour continuer la récupération avec d'autres outils ===== | ===== Pour continuer la récupération avec d'autres outils ===== | ||