Erreur de suppression de la commande rsync «Erreur d'E / S rencontrée - suppression de fichier ignorée»

16

J'utilise la commande rsync pour effectuer une sauvegarde des fichiers d'un de mes serveurs ubuntu vers une autre machine ubuntu. Le serveur de sauvegarde déclenche un script qui utilise la commande rysnc. Voici la commande que j'utilise

rsync -rltvh --partial --stats --exclude = .beagle / --exclude =. * --delete-after root @ live_server: / home / / home / live_server_backup / home >> /tmp/logfile.log 2> &1

live_server est compatible ssh sans mot de passe. Donc ça marche. Maintenant, le problème est avec

- option de suppression

Après tout le fichier synchronisé. À la fin, je peux voir la procédure de suppression L'erreur skipped.logfile est comme

Erreur d'E / S rencontrée - suppression de la suppression du fichier

Lorsque j'ai essayé de trouver le journal, une erreur s'est produite lors de la synchronisation des fichiers

rsync: send_files n'a pas réussi à ouvrir "/home/xyz/Desktop/PPT_session_1_context.pdf": autorisation refusée (13)

Donc, ma compréhension est que rsync n'a pas pu lire tous les fichiers de la cible pour des raisons de sécurité, il saute la suppression du fichier.

Existe-t-il un moyen de faire fonctionner --delete-after même s'il y a une erreur d'autorisation? Je ne veux pas utiliser la suppression forcée car cela sera dangereux dans certaines situations.

XemX
la source
1
Pssst encore ... Tu devrais vraiment.
Armel Larcier

Réponses:

13

Remarque supplémentaire sur ce problème:

vanished file ne devrait pas déclencher la condition IO error encountered -- skipping file deletion , mais cela se produit souvent lorsque vous créez une sauvegarde d'un système actif.

Ceci est couvert par le bogue rsync # 7809 ( https://bugzilla.samba.org/show_bug.cgi?id=7809 ) et devrait être résolu dans la prochaine version 3.1.0.

En attendant, utilisez:

--ignore-errors         delete even if there are I/O errors
reto
la source
19

Depuis la page de manuel de rsync:

--ignore-errors         delete even if there are I/O errors

Cela résoudra votre problème.

SickAnimations
la source
2

Vous devez utiliser un fichier d'exclusion pour rsyncignorer les fichiers qu'il ne peut pas lire. La liste peut être générée avec find . -exec test -r '{}'dans le répertoire source puis massée dans le format de fichier d'exclusion rsyncsouhaité.

Kyle Jones
la source
en fait, mon répertoire source est assez volumineux (10-12 Go). Donc, à chaque fois, trouver des fichiers (sans autorisation de lecture) ne sera pas un moyen efficace. Qu'est ce que tu dis?
XemX
Exécutez-le une fois pour créer la liste d'exclusion et ne l'exécutez pas à nouveau à moins qu'un tas de nouveaux fichiers illisibles ne soient ajoutés. rsync fait la même traversée d'arbre, donc ça ne devrait pas être si mal, de toute façon.
Kyle Jones
Oui. Mais c'est à ça que ressemble mon scénario. Le répertoire source de tous les jours peut introduire de tels fichiers. et je dois sauvegarder les nouveaux fichiers dans la machine de sauvegarde.
XemX
Y a-t-il une solution de travail à cela? J'utilise également rsync pour les sauvegardes à partir d'un système en direct et lorsqu'il y a une erreur d'E / S sur la machine de lecture, les fichiers sont supprimés sur la machine cible, ce qui NE DEVRAIT PAS ARRIVER!
bzero