#1 Le 28/08/2019, à 12:56
- thierry_b
problème rdiff-backup avec répertoire distant monté en cifs
Bonjour,
Quand je lance cette copie:
rdiff-backup --exclude-globbing-filelist exclude_from_snap_plex.txt /media/snap_plex /media/ds415play/donnees/Backup/snap_plex
Avec
/media/ds415play/donnees
étant un montage cifs, ça ne fonctionne pas, j'ai l'erreur suivante:
Exception '[Errno 95] Operation not supported' raised of class '<type 'exceptions.OSError'>':
File "/usr/lib/python2.7/dist-packages/rdiff_backup/robust.py", line 32, in check_common_error
try: return function(*args)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 111, in copy
rpout.symlink(rpin.readlink())
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 1002, in symlink
self.conn.os.symlink(linktext, self.path)
Exception '[Errno 95] Operation not supported' raised of class '<type 'exceptions.OSError'>':
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 304, in error_check_Main
try: Main(arglist)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 324, in Main
take_action(rps)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 280, in take_action
elif action == "backup": Backup(rps[0], rps[1])
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 346, in Backup
backup.Mirror(rpin, rpout)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 38, in Mirror
DestS.patch(dest_rpath, source_diffiter)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 232, in patch
ITR(diff.index, diff)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rorpiter.py", line 281, in __call__
last_branch.fast_process(*args)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 529, in fast_process
if self.patch_to_temp(mirror_rp, diff_rorp, tf):
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 553, in patch_to_temp
result = self.patch_snapshot_to_temp(diff_rorp, new)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 577, in patch_snapshot_to_temp
self.write_special(diff_rorp, new)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 617, in write_special
if robust.check_common_error(eh, rpath.copy, (diff_rorp, new)) == 0:
File "/usr/lib/python2.7/dist-packages/rdiff_backup/robust.py", line 32, in check_common_error
try: return function(*args)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 111, in copy
rpout.symlink(rpin.readlink())
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 1002, in symlink
self.conn.os.symlink(linktext, self.path)
Traceback (most recent call last):
File "/usr/bin/rdiff-backup", line 30, in <module>
rdiff_backup.Main.error_check_Main(sys.argv[1:])
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 304, in error_check_Main
try: Main(arglist)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 324, in Main
take_action(rps)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 280, in take_action
elif action == "backup": Backup(rps[0], rps[1])
File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 346, in Backup
backup.Mirror(rpin, rpout)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 38, in Mirror
DestS.patch(dest_rpath, source_diffiter)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 232, in patch
ITR(diff.index, diff)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rorpiter.py", line 281, in __call__
last_branch.fast_process(*args)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 529, in fast_process
if self.patch_to_temp(mirror_rp, diff_rorp, tf):
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 553, in patch_to_temp
result = self.patch_snapshot_to_temp(diff_rorp, new)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 577, in patch_snapshot_to_temp
self.write_special(diff_rorp, new)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 617, in write_special
if robust.check_common_error(eh, rpath.copy, (diff_rorp, new)) == 0:
File "/usr/lib/python2.7/dist-packages/rdiff_backup/robust.py", line 32, in check_common_error
try: return function(*args)
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 111, in copy
rpout.symlink(rpin.readlink())
File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 1002, in symlink
self.conn.os.symlink(linktext, self.path)
OSError: [Errno 95] Operation not supported
J'ai essayé d'ajouter en option de montage iocharset=utf8, mais ça ne change rien.
La commande est exécutée en root et par contre, si je mets en répertoire de destination, un répertoire local de la même machine, aucun soucis.
Des idées?
Merci.
Dernière modification par thierry_b (Le 28/08/2019, à 12:57)
Hors ligne
#2 Le 28/08/2019, à 15:02
- bruno
Re : problème rdiff-backup avec répertoire distant monté en cifs
Bonjour,
Dans la mesure où rdiff-backup est un script basé sur rsync qui est censé préserver les propriétaires/groupes et droits d'accès sur les fichiers je soupçonne un problème avec le système de fichiers monté en CIFS (système non compatible avec les droits UNIX ou avec les liens).
#3 Le 28/08/2019, à 23:10
- thierry_b
Re : problème rdiff-backup avec répertoire distant monté en cifs
Bonjour,
Dans la mesure où rdiff-backup est un script basé sur rsync qui est censé préserver les propriétaires/groupes et droits d'accès sur les fichiers je soupçonne un problème avec le système de fichiers monté en CIFS (système non compatible avec les droits UNIX ou avec les liens).
Bonsoir,
Oui possible, mais du coup, comment puis-je m'en sortir?
Quand je liste le contenu du répertoire monté en cifs, le user et le group des fichiers sont root.
Du coup, pour toi, ça ne serait pas possible de le faire avec du cifs en cible?
Merci.
Hors ligne
#4 Le 29/08/2019, à 07:00
- bruno
Re : problème rdiff-backup avec répertoire distant monté en cifs
D'après la doc : http://www.nongnu.org/rdiff-backup/FAQ.html#cifs, c'est possible mais il est conseillé d'utiliser SSH.
Mais ce qui compte surtout c'est le système de fichiers utilisé sur la destination. Si c'est un système de fichier Windows (fat, ntfs), tu vas avoir des erreurs et si cela fonctionne une sauvegarde peu fiable.
Vu que dans les retours d'erreur il y a copy et symlink, tu peux essayer de lancer rdiff-backup avec une ou plusieurs de ces options :
--exclude-symbolic-links --no-acls --no-hard-links
#5 Le 29/08/2019, à 15:04
- thierry_b
Re : problème rdiff-backup avec répertoire distant monté en cifs
Hello,
Je te remercie.
En fait, le système cible c'est de l'Ext4 sur mon NAS Synology.
Le problème c'est que je peux pas me permettre d'enlever les liens symboliques et que ma copie soit bancale. En fait, au niveau de ma conf Plex, les répertoires /var/lib/plexmediaserver et /usr/lib/plexmediaserver sont des liens symboliques vers un LV dédié.
Et ça va se compliquer pour faire du rdiff-backup par ssh, c'est possible de l'activer, mais si je veux automatiser ça et passer par une clé ssh, va falloir bidouiller un peu le NAS et la bidouille sera certainement à refaire de temps en temps selon les mise à jour de Synology.
Du coup, peut-être que la meilleure solution serait de faire la copie en locale (en restant sur mon NUC qui héberge mon serveur Plex) et ensuite de faire un tar.gz directement sur le montage cifs, ce qui ne posera plus de problème je pense.
T'en penses quoi?
Merci.
Hors ligne
#6 Le 29/08/2019, à 15:37
- bruno
Re : problème rdiff-backup avec répertoire distant monté en cifs
Si le système cible est en ext4 cela semble confirmer que le problème vient des liens symboliques.
Il faudrait regarder la doc rdiff-backup pour voir comment ils sont gérés (copie des liens et de leurs cibles).
Il faut aussi voir comment ils sont gérés au niveau du partage Samba, c'est à dire dans la configuration du serveur Samba sur le NAS. Je te renvoie à la doc Samba pour les options de gestion des liens symboliques.
Voici un exemple qui permet de prendre en compte les liens symboliques (follow symlinks) et de suivre les liens symboliques en dehors du partage (wide links) :
[partage]
follow symlinks = yes
wide links = yes
De manière générale je considère qu'il n'y a pas de raison d'utiliser des partages Samba et cifs entre machines sous Linux. Ce devraient être réservé pour les partages avec des machines sous Windows.
Tu aurais tout intérêt à utiliser SSH qui sera plus fiable et plus rapide.
Ta solution de contournement via une archive compréssée est peut-être plus simple pour toi.