J'exécute une sauvegarde quotidienne avec rsync. Depuis quelques jours, l’un des fichiers a généré cette erreur lors de la sauvegarde:
rsync: read errors mapping "/home/folder/file.ext": Input/output error (5)
WARNING: /home/folder/file.ext failed verification -- update discarded (will try again).
Quel est le meilleur plan d'action? Est-ce juste un fichier cassé? Ou y a-t-il un problème avec le disque dur à l'emplacement du fichier? Dois-je simplement le supprimer et copier l'une des versions sauvegardées à l'emplacement du fichier? Ou y a-t-il autre chose/plus que je devrais faire?
L'erreur rsync
read errors mapping ....: Input/output error (5)
indique l'impossibilité pour rsync de lire ou d'écrire un fichier. Les causes les plus probables de cette erreur sont des défauts de disque, dans le répertoire SRC ou dans le répertoire TGT. D'autres possibilités incluent toutefois des autorisations insuffisantes, le verrouillage de fichier par des programmes antivirus et maybe
autres causes.
La première étape vers un diagnostic consiste à essayer de copier les fichiers manuellement. Cela peut fonctionner si, par exemple, l'erreur est due à un disque défectueux dans le répertoire TGT; en répétant l'opération à un moment ultérieur, vous écrivez dans une section différente du disque et le problème peut s'être évaporé.
Vous pouvez également découvrir que vous ne pouvez pas accéder au fichier du répertoire SRC. Dans ce cas, je vous suggère d'utiliser l'un des utilitaires de vérification de disque disponibles pour votre distribution.
Les privilèges insuffisants, anti-virus, sont plus faciles à diagnostiquer.
Enfin, si votre répertoire SRC contient un secteur défectueux, vous pouvez l'exclure des futures exécutions de rsync au moyen de
rsync -av --exclude='/home/my_name/directory_with_corrupt_files/*'
J'ai eu un problème similaire, j'ai eu avec un périphérique monté sur Fuse via USB, qui se déconnecte fréquemment, provoquant des erreurs IO. Ma sauvegarde ne pourrait jamais se terminer car les erreurs IO commençaient à mi-parcours de rsync et, malgré l'exécution répétée de rsync, la synchronisation ne se poursuivrait pas au-delà de la mise à jour des fichiers existants.
Ma solution était d'utiliser
--ignore-existing
option. De cette façon, je pouvais exécuter la synchronisation en boucle jusqu'à voir l'état de sortie 0.
Bien sûr, dans ce cas, je ne me souciais pas des mises à jour de fichiers existants.
J'ai 2 disques externes synchronisés, en utilisant rsync
. J'effectue cette tâche régulièrement sur l'une des deux machines et passe souvent de l'une à l'autre pour des raisons de commodité. J'ai 4 machines exécutant Debian 9 et j'utilise ces lecteurs sur chacune d'elles.
Ce matin j'ai utilisé ce qui suit:
rsync -ahv --delete drive-x drive-y
et a été surpris d'avoir quelques centaines d'échecs signalés.
principalement: rsync: readlink_stat... failed: Input/output error (5)
aussi: rsync: rsync: recv_generator: mkdir ... failed: Read-only file system (30)
Pour savoir ce qui s'est passé, j'ai remonté les disques deux fois, redémarré, lancé rsync
sans --delete
et, fondamentalement, je tente de réparer un problème qui fonctionne de manière fiable depuis longtemps. Même pensé à installer rsync
à nouveau. Avant de le faire, j’ai décidé de rsync
les 2 lecteurs de l’autre ordinateur, que je lance en mode hors connexion. rsync
a fonctionné exactement comme il se doit.
Après avoir lu le contenu posté ici, j'ai installé clamav
, mis à jour les signatures et scanné mon répertoire personnel. Je l'utilise régulièrement sur une autre machine. J'ai trouvé 1 et seulement 1 PUA, et je l'ai supprimé. Je supprime toujours les PUA. J'ai ensuite remonté les deux lecteurs avec cette machine et ajouté différents fichiers et dossiers de test à chaque lecteur.
J'ai couru rsync -ahv --delete drive_x drive_y
et tout a bien fonctionné.