problèmes copie fichiers avec ACL

Bonjour,

Je dois transférer des fichiers avec ACL d’un serveur à un autre identique ou presque…et j’enchaine les problèmes.

=> Voici la situation :

  • serveur1 (source):
    contient les fichiers à récupérer avec leur ACL (86Go/arborescence profonde)dans une partition xfs (support acl par défaut)

  • serveur2 (destination):
    support acl xfs ok dans noyau, paquet acl ok, partition de destination xfs également ok (monté par défaut avec le support acl)

  • Les deux serveur sont sur le même sous-réseaux.

=> Ce que j’ai déjà essayer de faire :

  • Monter la partition xfs de serveur1 contenant les fichiers avec ACL sur serveur2 via un partage smb (pas cifs), une fois la partition montée copier le contenu du point de montage vers la partition de destination avec un outils de copie conservant les ACL sans supprimer les fichiers sources donc avec “cp -a”.
    Problème après avoir cherché pourquoi les ACL n’avait pas été conservé, il s’avère que le montage via le système de fichier réseau smb ne supporte pas les ACL.

  • Les fichiers étant déjà copiés, j’utilise donc les commandes du paquet acl (getfacl/setfacl) permettant d’exporter les ACL dans un fichier puis de les réinjecter par export :
    Sur serveur1

Sur serveur2

Problème les noms de fichiers contiennent des caractères accentués, des espaces…qui dans le chemin du fichier export_acl.acl ressemblent à “mod\303\250le” pour modèle par exemple… du coup la restauration échoue car le fichier de destination s’affiche correctement (modèle).Bien entendu il s’agit d’un serveur de fichier avec 250000fichiers avec des milliers de fichiers nommés avec des caractères accentués et ou des espaces…

  • J’ai tout essayé je crois niveau encodage (toutes les pistes du net), testé plusieurs encodages sur le serveur source et serveur de destination (UTF-8,fr, iso8859-15) avec le fichier i18n, la commande locale (avec déconnexion à chaque fois) mais quand le contenu du fichier export_acl.acl affiche bien les accents (ex : modèle) c’est le nom des fichiers qui ne va plus.
    J’ai essayer iconv également pour modifier l’encodage du fichier export_acl.acl mais rien n’y fait.

  • finalement je pense supprimer la copie pour la recommencer en conservant les ACL cette fois, apparemment en passant par un partage NFS le répertoire de montage devrait contenir les ACL mais je ne suis pas sur que la version de NFS (assez ancienne) la supportait déjà (il s’agit de serveurs Mandriva CS3/2.6.3 et CS4/2.6.12, c’est au boulot…)

Je suis preneur de pistes et solutions (je précise que le serveur1 sous CS3 est en production et est le controleur de domaine+serveur de fichier donc il faut des solutions n’empechant pas la continuité de service)

merci

Tu as essayé avec convmv?

Non juste iconv, j’ai vu que ça existait mais il me semble que le manuel/man ne m’a pas parlé et je fini par douter de la conversion nécessaire (encodage source du fichier?encodage de sortie pour avoir les accents?) mais si tu connais les options qui vont bien je suis ok pour tester.

Je n’y comprends plus rien dans l’encodage, en effet je vais réussir à ce que les noms de fichiers dans l’arborescence affiche correctement les “é”,“è”, "…donc je lance l’export des ACL dans un fichier et si je visualise le contenu de ce dernier je m’aperçois que les “é” sont devenu des “\303\251”…et si je modifie la locale du système (tty ?), je vais réussir à ce que le contenu du fichier soit ok mais après ce sont les noms de fichiers dans l’arborescences qui ne vont plus…c’est une histoire de fou

le montage NFS n’a pas conservé les ACL.
J’ai donc formaté un disc dur externe/usb en xfs, monter cette partition en local sur le serveur1,copier les fichiers avec "cp -a pour conserver les ACL vers le point de montage et ensuite je brancherais le disc dur externe sur serveur2, je le monte et je copie avec cp -a.Je n’ai pas encore pu vérifier mais logiquement là il devrait pas y avoir de problème comme on reste sur du XFS sans passer par des système de fichiers réseaux

as tu essayé xfsdump et xfsrestore ?

une fois le fichier de restaure créé, il suffit de le transférer sur le second serveur avec rsync over ssh par exemple.

http://linux.die.net/man/8/xfsdump

Ca peut peut etre t’aider:
http://www.unixgarden.com/index.php/administration-systeme/initiation-aux-listes-de-controle-d%E2%80%99acces-acl-et-aux-attributs-etendus-ea-sous-linux

tar.gz ne garde pas les ACL je présume :frowning:

merci pour ta réponse

j’avais pensé à xfsdump et xfsrestore mais je gardais en dernière solution et j’ai finalement réussi avant :

depuis le serveur de destination j’ai exécuté cette commande

cette commande m’a récupéré les fichiers avec les permissions unix + les acl mais incomplètes (vides ou presque) donc j’ai exporté les acl du serveur source dans un fichier puis importé celles-ci sur le serveur destination et l’importation c’est bien passée, les acl sur les fichiers ont été complété

sinon tar ne conserve pas les acl

comment as tu exporté les ACL dans un fichier ? et comment les as tu importé ?

Ca pourrait servir à d’autres, au cas où :wink:

Merci pour tes infos.

les fichiers avec leurs ACL se trouvaient dans la partitions /smb

Donc pour récupérer les ACL une fois que les fichiers sont copiés (avec rsync -av)

Pour l’export sur le serveur source :

je me suis placé à la racine

ensuite

(il y a pas de faute de frappe c’est bien smb/ )

pour l’import sur le serveur de destination :

je récupère le fichier sauve_acl.acl du serveur source pour le mettre en local sur /tmp

je me place à la racine

puis

setfacl --restore=/tmp/sauve_acl.acl

et le tour est joué…

note : dans les 2 cas mes partitions source et destination étaient /smb et formaté en xfs (support acl activé au montage par défaut) et j’avais le paquet acl (nécessaire pour les commandes getfacl et setfacl) ainsi que le support ACL à yes dans la config du noyau