Quelque part sur les internets, j'ai lu que gddrescue est supérieur à dd au moins en termes de pouvoir distinguer la quantité de lectures de disque effectuées sur un secteur en difficulté. Est-ce vraiment le cas?
time dd if = / dev / sda skip = 900343967 of = a.bin count = 4 iflag = direct conv = noerror, sync
dd: lecture `/ dev / sda ': erreur d'entrée / sortie
2 + 0 enregistrements en
2 + 0 enregistrements en sortie
1024 octets (1.0 kB) copiés, 18.6057 s, 0.1 kB / s
3 + 1 enregistrements en
4 + 0 enregistrements en
2048 octets (2,0 ko) copiés, 18,6707 s, 0,1 ko / sréel 0m18.672s
utilisateur 0m0.000s
sys 0m0.004s
Btw, l' indicateur direct aide vraiment, sans cela je n'ai pu lire qu'un secteur sur 4 (vs 3/4 avec). Cependant, cela ralentit sensiblement la vitesse de transfert - c'est au moins 5 fois plus lent pour moi: 5 Mo / s vs 25 Mo / s sans ce drapeau. Quoi qu'il en soit, maintenant pour la partie gddrescue (ddrescue) ..
heure ddrescue -b512 -c1 -s4b -dnvD -i900343967b -o0b / dev / sda b.bin
Sur le point de copier 2048 octets de / dev / sda vers b.bin
Positions de départ: infile = 460976 Mo, outfile = 0 B
Copier la taille du bloc: 1 blocs
durs Taille du bloc dur: 512 octets
Max_retries: 0
Direct: oui Clairsemé: non Fractionné : non tronquer: nonAppuyez sur Ctrl-C pour interrompre le
sauvetage: 1536 B, taille erronée: 512 B, taux actuel: 53 B / s
ipos: 460976 Mo, erreurs: 1, taux moyen: 53 B / s
opos: 1536 B, temps depuis la dernière lecture réussie: 0 s
terminéréel 0m18.736s
utilisateur 0m0.004s
sys 0m0.000s
Comme indiqué ci-dessus, l'exécution a pris exactement le même temps. Comme prévu - mêmes statistiques: 3/4. Cependant, alors que je pouvais remplir les secteurs en difficulté avec 0x00 pour dd (conv = sync), gddrescue semble manquer cette fonctionnalité? Au lieu de cela, il saute simplement le secteur en difficulté sans écrire quoi que ce soit à sa position et continue avec le secteur suivant (si j'ai déjà des données écrites sur ce secteur dans le fichier de sortie - elles ne seront pas écrasées: parfois cela pourrait ne pas être souhaitable ). Je ne sais pas comment fonctionne l'option -t (tronquer) pour un périphérique bloc avec gddrescue(je suppose, il le remplacera complètement avec 0x00), mais sur un fichier normal, il tronquera, comme prévu, tout le fichier sans le faire uniquement dans les dimensions de décalage (c'est-à-dire -o1). Donc, c'est un peu similaire à dd sync , mais loin d'être le même car il ne reproduira que la fonctionnalité d'identicle SI vous êtes prêt à écraser l'ensemble du périphérique / fichier de sortie.
Bien que, grâce à la présence d'une option verbeuse et à la possibilité de consigner les secteurs / blocs défectueux , gddrescue semble être un meilleur choix. Il est important de noter que les deux applications ont été lancées avec (à peu près) des paramètres identiques.
La sortie de
diff? .bin
est vide (exit 0), ce qui signifie que les fichiers sont exactement les mêmes.
Maintenant, c'est la partie que je ne comprends pas :
dd est lent même sur les trucs sans erreur car il fait de minuscules lectures et écritures. Cela passe beaucoup de temps à mâcher les parties erronées du lecteur, plutôt que de lire autant de trucs sans erreur que possible, puis de revenir pour faire les choses difficiles.
Qu'est-ce que ça signifie? Surtout la partie " ça passe beaucoup de temps à mâcher les parties erronées du disque, plutôt que de lire autant de trucs sans erreur que possible, PUIS de revenir pour faire les choses difficiles "? Cela a pris le même temps que celui indiqué ci-dessus (même si j'ai inspecté une très petite partie des données, mais cela devrait-il être important?).
gddrescue propose le commutateur -r , qui devrait contrôler le nombre de relectures sur un "secteur défectueux", cependant, dd semble toujours fonctionner avec le -r0 (car cela a pris le même temps). Alors, cette option est-elle uniquement destinée au "post-traitement"? Ce que je veux en venir, c'est qu'à l'origine, dd et gddrescue semblent fonctionner avec -r0 et dd ne semble pas mâcher les parties erronées plus que gddrescue (ils semblent tous deux s'arrêter sur un mauvais bloc pendant 15-18 donner ou prendre des secondes, alors quel est le problème, comment gddrescue est- il plus rapide ???)
En outre, à quoi sert l' option -D (utiliser des écritures synchrones pour le fichier de sortie)? Je n'ai remarqué aucune différence avec certains des tests effectués.
Quelqu'un peut-il commenter le tout? Merci.