J'ai un disque dur avec des blocs défectueux ou des secteurs qui ne parviennent pas à lire en raison de problèmes mécaniques potentiels, tels qu'une tête de disque défectueuse, un moteur défectueux ou tout autre problème qui fait que le disque dur lit les données de manière atrocement lente et avec beaucoup des erreurs de lecture. Je vois une moyenne de 50 Ko / s, avec certaines lectures descendant en dessous de 10 Ko / sec, et souvent il reste bloqué sur un fichier ou un secteur, généralement pendant assez longtemps - de 2 à 10 minutes ou plus (lorsque en utilisant rsync, avant son expiration).
La vitesse semble varier énormément, et elle se coince beaucoup sur les fichiers, et quand elle est finalement "décollée", elle ne semble durer qu'une courte rafale avant de se bloquer à nouveau. Le lecteur est également très silencieux avec seulement un bruit occasionnel de copie de fichiers (généralement lorsqu'il est bloqué / décollé pendant une courte période, avant de se retrouver bloqué). Ainsi, aucun de ces sons mauvais n'est normalement associé à la mort du disque dur. Quelqu'un a suggéré que les problèmes semblaient provenir d'une tête de disque mal alignée, ce qui nécessite beaucoup de relectures avant de pouvoir lire les données avec succès. Cela semble plausible, mais je m'égare ...
Quoi qu'il en soit, le problème avec rsync est qu'il ne semble pas avoir de support de gestion des erreurs décent. De toute évidence, il n'était pas destiné à être utilisé pour récupérer des données à partir de disques durs défaillants, mais tous les utilitaires dits de "récupération de données" qui sont destinés à une telle utilisation se concentrent généralement sur la récupération de fichiers supprimés ou de partitions gâchées, plutôt que copier des fichiers sur des disques durs mourants. La récupération de fichiers supprimés n'est pas ce dont j'ai besoin, évidemment, alors vous pouvez peut-être comprendre ma déception de ne pas pouvoir trouver ce que je cherche encore.
Naturellement, c'est là que vous diriez probablement "Vous devriez utiliser ddrescue!" Eh bien, tout va bien et dandy, mais j'ai déjà la plupart des données sauvegardées, donc je veux juste récupérer certains fichiers. Je ne suis pas intéressé à essayer de récupérer une partition complète bloc par bloc comme le fait ddrescue. Je souhaite uniquement récupérer des fichiers et des répertoires spécifiques.
Idéalement, ce que j'aimerais, c'est une sorte de croisement entre rsync et ddrescue: quelque chose qui me permet de spécifier la source et la destination comme répertoires de fichiers normaux comme rsync (plutôt que deux partitions complètes comme ddrescue l'exige), avec un moyen d'ignorer les fichiers avec des erreurs lors d'une exécution initiale, puis me permet de tenter de récupérer ces fichiers avec des erreurs lors d'une exécution ultérieure (avec une commande légèrement modifiée, bien sûr), offrant peut-être même une option pour spécifier le nombre de tentatives de réessai ... tout comme comment ddrescue fonctionne avec des blocs, seulement je veux un utilitaire qui fonctionne avec des fichiers / répertoires spécifiques comme rsync.
Suis-je en train de rêver ici, ou existe-t-il quelque chose qui puisse le faire? Ou peut-être même un moyen de faire fonctionner rsync ou ddrescue de cette manière? Je suis vraiment ouvert à toutes les solutions qui pourraient fonctionner, tant qu'elles me permettent de choisir les fichiers que je veux "sauver", et peuvent ignorer les fichiers contenant des erreurs lors de l'exécution initiale, et réessayer / réessayer ces erreurs plus tard.
Jusqu'à présent, j'ai essayé rsync avec les options suivantes, mais il reste souvent bloqué sur un fichier plus longtemps que le délai d'expiration, et idéalement je voudrais juste qu'il passe au fichier suivant et revienne plus tard aux fichiers qu'il obtient collé sur. Je ne pense pas que ce soit possible cependant. Quoi qu'il en soit, voici ce que j'utilisais jusqu'à présent:
rsync -avP --stats --block-size=512 --timeout=600 /path/to/source/* /path/to/destination/