Comment interpréter et corriger une erreur d'entrée / sortie sous Linux?

21

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).

Quelle est la meilleure ligne de conduite? 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 dans l'emplacement du fichier? Ou y a-t-il autre chose / plus que je devrais faire?

découvrir
la source

Réponses:

17

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, soit dans le SRC, soit dans le répertoire TGT. Cependant, d'autres possibilités incluent des autorisations insuffisantes, le verrouillage de fichiers par des programmes antivirus et d' maybeautres causes.

La première étape vers un diagnostic consiste à essayer de copier les fichiers manuellement. Cela peut fonctionner si, par exemple, la source de l'erreur était un défaut de disque dans le répertoire TGT; en répétant l'opération ultérieurement, vous écrirez dans une autre section du disque et le problème peut s'être évaporé.

Vous pouvez également découvrir que vous ne pouvez pas accéder au fichier dans le 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 vous avez un secteur défectueux sur votre répertoire SRC, vous pouvez exclure celui des futures exécutions de rsync au moyen de

rsync -av --exclude='/home/my_name/directory_with_corrupt_files/*'
MariusMatutiae
la source
Merci! Au risque de poser une autre question, comment savoir s'il s'agit du répertoire SRC ou TGT si je peux exclure des privilèges ou un antivirus?
découverte
Un antivirus verrouille les fichiers pendant un certain temps. Si tel est le problème, réessayer la même commande un peu plus tard ne devrait pas présenter la même erreur. La question des privilèges est simple: utilisez un compte root sur les machines SRC et TGT. Si vous ne pouvez pas le faire, vérifiez que les fichiers sur lesquels échoue rsync vous sont accessibles, c'est-à-dire qu'ils appartiennent au compte essayant d'y accéder, et s'ils ne le font pas, vous y avez accès en lecture. Si cela résout votre problème, n'oubliez pas d'accepter ma réponse, elle est utile aux autres lecteurs.
MariusMatutiae
Vous avez mal compris mon commentaire ci-dessus. Peu importe, je vais poser une nouvelle question.
découverte
TGT est juste une cible, non? Il serait peut-être préférable de dire simplement cible, alors.
Jasper
Il semble que votre réponse ait donné naissance à tout un article bobcares.com/blog/rsync-input-output-error_5 (sans références, bien sûr).
Yaroslav Nikitenko du
3

J'ai eu un problème similaire, j'avais un appareil monté sur fusible via USB, qui se déconnectait fréquemment, provoquant des erreurs d'E / S. Ma sauvegarde n'a jamais pu se terminer car les erreurs d'E / S commenceraient à mi-chemin dans le rsync, et malgré l'exécution répétée de rsync, à un moment donné, la synchronisation ne progresserait 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 un état de sortie 0.

Bien sûr, dans ce cas, je ne me souciais pas des mises à jour des fichiers existants.

user84207
la source
0

J'ai 2 disques externes que je garde synchronisés, en utilisant rsync. J'exécute cette tâche régulièrement sur l'une des deux machines et je passe fréquemment 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.

surtout: rsync: readlink_stat... failed: Input/output error (5)
aussi:rsync: rsync: recv_generator: mkdir ... failed: Read-only file system (30)

Dans le processus pour découvrir ce qui s'est passé, j'ai remonté les disques deux fois, redémarré, exécuté rsyncsans --deleteet, fondamentalement, mes tentatives normales de réparer quelque chose qui fonctionnaient de manière fiable depuis longtemps. Même pensé à réinstaller rsync. Avant de faire cela, j'ai décidé d'utiliser rsyncles 2 disques sur l'autre machine, que je lance hors ligne. rsynca fonctionné comme il se doit.

Après avoir lu le matériel affiché 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 disques avec cette machine et ajouté différents fichiers et dossiers de test à chaque disque.

J'ai couru rsync -ahv --delete drive_x drive_yet tout a bien fonctionné.

user1003553
la source