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
Prochaine révision Les deux révisions suivantes
ddrescue [Le 12/10/2019, 15:05]
37.167.251.183 [Suivi de l'exécution de DDRESCUE]
ddrescue [Le 24/10/2019, 17:19]
185.220.101.13 [Suivi de l'exécution de DDRESCUE]
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>​
-  ​==Fabriquer les secteurs qui n'ont pas été copiés == +==Fabriquer les secteurs qui n'ont pas été copiés == 
-J'ai pensé à cette action afin de récupérer '​facilement'​ les fichiers qui sont en mauvais état suite à certains blocs manquants. C'est possible pas les outils de gestions des mauvais blocks ou la recherche dans les fichiers+- Avec mise d'un commentaire personnel.  
-<code bash>sudo -+<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/sde /​home/​ubuntu/​dd/​suivi </​code>​ 
-ddrescuelog ​-l- -b512 /​home/​ubuntu/​dd/​suivi >/​home/​ubuntu/​dd/​badblocs +ou avec écriture ​de zéros
-echo "​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" ​>/​home/​ubuntu/​dd/​marque +<code bash>​ddrescue --fill-mode=- --force --synchronous /dev/zero /dev/sde /​home/​ubuntu/​dd/​suivi</​code>​ 
-sed '​s|^|sudo dd if=/​home/​ubuntu/​dd/​marque of=/​dev/​sde ​bs=512 count=1 seek=|' ​/​home/​ubuntu/​dd/​badblocs>/​home/​ubuntu/​dd/​ecrire +
-pg /​home/​ubuntu/​dd/​ecrire</​code>​ +
-   ​exécuter le contenu du fichier /​home/​ubuntu/​dd/​ecrire. Il est aussi possible ​de simplement y mettre des zéros ​avec cette commande: ​<code bash>​ddrescue --fill-mode=- --force --synchronous /dev/zero /dev/sde /​home/​ubuntu/​dd/​suivi</​code>​ +
-  - exit+
 === Sauvegarde d'une partition dans une partition avec un livecdrom === === Sauvegarde d'une partition dans une partition avec un livecdrom ===
 La taille du secteur est de 4096 bytes. La taille du secteur est de 4096 bytes.
Ligne 162: Ligne 185:
 <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>​
 == Fabriquer les secteurs qui n'ont pas été copiés == == Fabriquer les secteurs qui n'ont pas été copiés ==
-J'ai pensé à cette action afin de récupérer '​facilement'​ les fichiers qui sont en mauvais état suite à certains blocs manquants. C'est possible pas les outils de gestions des mauvais blocks ou la recherche dans les fichiers+- Avec mise d'un commentaire personnel.  
-<code bash>sudo -+<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>​ 
-ddrescuelog ​-l- -b4096 /​media/​ubuntu/​dd/​suivi6 >/​media/​ubuntu/​dd/​badblocs +ou avec écriture ​de zéros
- ​echo ​"​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" ​>/​media/​ubuntu/​dd/​marque +<​code>​ddrescue --fill-mode=- --force --synchronous /dev/zero /dev/sde2 /​media/​ubuntu/​dd/​suivi6</​code>​ 
- sed '​s|^|sudo dd if=/​media/​ubuntu/​dd/​marque of=/​dev/​sde2 ​bs=4096 count=1 seek=|' ​/media/ubuntu/dd/badblocs>/​media/​ubuntu/​dd/​ecrire +
-pg /​media/​ubuntu/​dd/​ecrire</​code>​ +
-      exécuter le contenu du fichier /​media/​ubuntu/​dd/​ecrire. Il est aussi possible ​de simplement y mettre des zéros ​avec cette commande: ​<​code>​ddrescue --fill-mode=- --force --synchronous /dev/zero /dev/sde2 /​media/​ubuntu/​dd/​suivi6</​code>​ +
-      - exit+
  
 === Copier dans un fichier === === Copier 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>​
 ===== 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 220: Ligne 240:
  
 ===== 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!
-==== Exemple de grille de suivi de lancement initial ==== +
-<​code>​rescued: ​   70243 MB,  errsize: ​ 19369 kB,  current rate:    5308 kB/​ssize: ​ 19275 kB,  current rate:   ​65863 kB/s +
-   ​ipos: ​   70305 MB,   ​errors: ​    ​439, ​   average rate:   16523 kB/s +
-   ​opos: ​   70305 MB, run time:    1.18 h,  successful read:       0 s ago +
-Copying non-tried blocks... Pass 1 (forwards) </​code>​  +
-==== Exemple ​de grille de suivi de relance ====+
 <​code>​GNU ddrescue 1.22 <​code>​GNU ddrescue 1.22
 Press Ctrl-C to interrupt Press Ctrl-C to interrupt
Ligne 240: Ligne 256:
                               time since last successful read:  3h  6m 11s                               time since last successful read:  3h  6m 11s
 Scraping failed blocks... (forwards) </​code>  ​ Scraping failed blocks... (forwards) </​code>  ​
-==== Signification de quelques zones: ​==== +Signification de quelques zones:
  
 **Initial status**: Lorsque ddrescue est relancé suite à une interruption,​ le fichier de log permet de continuer l'​action en cours. La ligne qui suit fait un récapitulatif de tout ce qui a déjà été traité. Les deux lignes ne sont pas présentes lors du premier lancement. ​ **Initial status**: Lorsque ddrescue est relancé suite à une interruption,​ le fichier de log permet de continuer l'​action en cours. La ligne qui suit fait un récapitulatif de tout ce qui a déjà été traité. Les deux lignes ne sont pas présentes lors du premier lancement. ​
Ligne 258: Ligne 273:
  
 **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 =====
  
  • ddrescue.txt
  • Dernière modification: Le 29/01/2024, 22:24
  • par krodelabestiole