web-dev-qa-db-fra.com

Comment reprendre le processus DDRESCUE?

Je dois récupérer mon USB HD 1 To. J'utilise ddrescue pour y accomplir. Y a-t-il une façon de pouvoir reprendre ddrescue une fois que je le faisais?

J'utilise la commande:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image
9
confiq

DDRESCUE peut être repris, mais il nécessite un fichier journal pour pouvoir le faire. Le fichier journal enregistrera les progrès réalisés jusqu'à présent et le redémarrage de DDRESCUE lira le fichier journal et commencera où il s'est arrêté.

Le fichier journal serait le troisième paramètre:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log

Si vous avez déjà démarré une course DDRESCUE sans un fichier journal et l'annuler, la prochaine fois que DDRESCUE s'exécute, il commencera au début car il n'a pas d'enregistrement de ce qui a déjà été récupéré.

REMARQUE : ddscue et dd_rescue sont des programmes différents.

14
shf301

Même si vous avez oublié de spécifier un fichier journal, il peut y avoir espoir:

Génération-mode

Donc, vous ne l'avez pas lu le tutoriel et ddrescue commencé sans un fichier journal. Maintenant, deux jours plus tard, votre ordinateur a planté et vous ne pouvez pas savoir combien de données ddrescue ont réussi à sauver. Pire encore, vous ne pouvez pas reprendre le sauvetage; vous devez redémarrer dès le début.

Ou peut-être que vous avez commencé la copie d'un disque avec dd conv=noerror,sync Et sont maintenant dans la même situation décrite ci-dessus. Dans ce cas, notez que vous ne pouvez pas utiliser une copie faite par dd à moins qu'il a été invoqué avec le sync argument conversion.

Ne désespérez pas (encore). Ddrescue peut, dans certains cas, générer un fichier journal approximatif, à partir du fichier d'entrée et la (partielle) copie, qui est presque aussi bon que d'un fichier journal exact. Il fait cela en supposant simplement que les secteurs containng tous les zéros ne sont pas secourus.

Cependant, si la destination de la copie était un lecteur ou une partition (ou un fichier régulier existant et troncature n'a pas été demandée), plus probablement vous devrez redémarrer ddrescue dès le début. (Cette fois-ci avec un fichier journal, bien sûr). La raison est que les anciennes données peuvent être présentes dans le lecteur qui n'ont pas encore été écrasé, et peuvent donc être non essayée, mais non nul.

Par exemple, si vous devez d'abord essayé une de ces commandes:

ddrescue infile outfile

ou

dd if=infile of=outfile conv=noerror,sync

vous pouvez générer un fichier journal approximative avec cette commande:

ddrescue --generate-mode infile outfile logfile
6
Miles Wolbe

Comme d'autres l'ont dit, vous devez toujours spécifier un logfile comme troisième paramètre, qui permettra de reprendre la reprise. Puisque vous ne l'avez pas fait, cela ne va pas vous aider ici. Si vous savez approximativement, quel point le processus est arrivé, vous pouvez utiliser le --input-position et --output-position Paramètres Pour commencer à partir de ce point (assurez-vous de définir les deux paramètres sur la même valeur, sinon la sortie sera corrompue).

3
mgorven

Puisque vous n'avez pas spécifié de fichier journal comme troisième paramètre, la reprise ne peut pas être effectuée automatiquement. Vous pouvez créer un logfile à la main si vous connaissez les secteurs déjà sauvés, la syntaxe est facile. Il suffit de commencer une autre sauvetage factice à un autre fichier tout en spécifiant un journal et laissez-le lire différentes zones. Puis modifiez le journal pour représenter les zones déjà sauvées dans votre premier fichier. Réexécutez maintenant votre commande précédente mais donnez le nom du fichier journal comme troisième paramètre. DDRESCUE reprendra ensuite sur le premier secteur non plat.

2
Gurken Papst

Par https://wiki.archlinux.org/index.php/disk_cloning Il semble que avec le conv=noerror,sync Switch, ddDoes en fait ajouter des zéros à la fin d'un bloc, pas exactement où les erreurs de lecture ont eu lieu. Cela est contraire aux informations de la réponse de Miles Wolbe à partir de 2013-08-29.

Par exemple, si une séquence correcte est 198123283 Et il y a une erreur de lecture au milieu, elle écrira 198283000, ne pas 198000283.

Donc, au cas où il y avait des erreurs de lecture réellement, la méthode proposée ne sera pas exacte - il y aura des domaines qui auraient été lisibles qui se retrouveront remplis de zéros, mais seront considérés comme "sauvés".

Au fait, c'est une bonne pratique de commencer une telle tentative de récupération en remplissant le lecteur de destination avec des zéros (ou au moins l'espace libre, qui peut être fait avec WinHex par exemple).

2
GabrielB