OVH Cloud OVH Cloud

Sauvegarde et restauration des permissions

7 réponses
Avatar
Vincent Ramos
Bonjour,

J'ai trouvé un jour le code d'un script permettant de sauvegarder les
appartenances (propriétaire/groupe) et permissions d'une arborescence
de fichiers et de restaurer si besoin est ces permissions : à
l'époque, je n'avais pas jugé utile de l'enregistrer, ce script.

Or, j'ai besoin de modifier en masse des droits et des
propriétaires/groupes dans une arborescence complexe (en termes de
droits) et voudrais pouvoir revenir en arrière si, finalement, ma
nouvelle configuration ne me plaît pas.

Si quelqu'un voit de quel type de script je peux parler, grand merci
de m'indiquer un pointeur.

--
apt-get moo

7 réponses

Avatar
Thomas Baruchel
Si quelqu'un voit de quel type de script je peux parler, grand merci
de m'indiquer un pointeur.


Non, mais juste une piste :
find ./ -type f -exec stat -f "%p %N" {} ;
peut servir de points de départ (cela t'affichera tous les fichiers
à partir de l'endroit courant, en descendant dans l'arborescence,
en t'affichant à chaque ligne, les permissions et le chamin absolu).
Avec 'man stat' tu peux personnaliser davantage le format.

De façon plus brutale, mais facile à exploiter ensuite avec awk
ou un autre outil, tu as
find ./ -type f -exec stat -F {} ;
qui en gros donne la sortie de 'ls -l' avec un fichier par ligne.

Cordialement,

--
Thomas Baruchel
write to baruchel at the host called bluebottle dot com
écrire à baruchel chez l'hôte nommé bluebottle point com
http://baruchel.thomas.free.fr/

Avatar
Vincent Ramos
Thomas Baruchel égrapsen en <434c31b7$0$32753$ :

find ./ -type f -exec stat -f "%p %N" {} ;
[...]

find ./ -type f -exec stat -F {} ;


Merci, je le note dans mon pense-bête.

Avatar
Thomas Baruchel
find ./ -type f -exec stat -f "%p %N" {} ;
find ./ -type f -exec stat -F {} ;


Merci, je le note dans mon pense-bête.


Je crois que tu étais aussi intéressé par le propriétaire et le groupe ;
la page de manuel de 'stat' t'indiquera comment les afficher.
Une astuce : le format (avec l'option -f) t'autorise même à
ajouter des chaînes de caractères arbitraires ; rien ne t'interdit
donc en une seule ligne de produire un script affichant les chmod,
chown, chgrp aux bons endroits de la sortie de stat.
Comme ça, tu te crées un alias shell simple que tu pourras rediriger
vers un fichier, que tu auras simplement à exécuter par la suite
pour rétablir les droits.

Cordialement,

--
Thomas Baruchel
write to baruchel at the host called bluebottle dot com
écrire à baruchel chez l'hôte nommé bluebottle point com
http://baruchel.thomas.free.fr/


Avatar
Thomas Baruchel
find ./ -type f -exec stat -f "%p %N" {} ;
[...]

find ./ -type f -exec stat -F {} ;


Merci, je le note dans mon pense-bête.


Note aussi que j'avais mis par défaut "type f" pour le type de fichier
à sélectionner, ce qui exclut les répertoires par exemples, donc
consulte aussi 'man find' (en plus de 'man stat').

Cordialement,

--
Thomas Baruchel
write to baruchel at the host called bluebottle dot com
écrire à baruchel chez l'hôte nommé bluebottle point com
http://baruchel.free.fr/~thomas/


Avatar
lhabert
Thomas Baruchel :

find ./ -type f -exec stat -f "%p %N" {} ;
find ./ -type f -exec stat -F {} ;


Bah ça va louzer si il y a des espaces dans les noms de fichiers. Avec gnu
find, et gnu xargs, on peut se dépatouiller plus fiablement :

find . -printf '%m%u%g%p'

, et pour restaurer, quelque chose comme :

xargs -0 sh -c 'while test $# -gt 0; do chmod "$1" "$4"; chown "$2"."$3" "$4"; shift 4; done' ploum

, sauf que ça louze si il y a trop de fichiers, parce que xargs va découper
en paquets, et ça va probablement pas couper au bon endroit. Il faudrait
corriger ce point, mais là j'ai sommeil, je laisse en exercice au lecteur :-)

Avatar
Vincent Ramos
Thomas Baruchel égrapsen en <434d5351$0$22389$ :

Je crois que tu étais aussi intéressé par le propriétaire et le
groupe ; la page de manuel de 'stat' t'indiquera comment les
afficher. Une astuce : le format (avec l'option -f) t'autorise même
à ajouter des chaînes de caractères arbitraires ; rien ne t'interdit
donc en une seule ligne de produire un script affichant les chmod,
chown, chgrp aux bons endroits de la sortie de stat.
Comme ça, tu te crées un alias shell simple que tu pourras rediriger
vers un fichier, que tu auras simplement à exécuter par la suite
pour rétablir les droits.


Merci pour tous ces conseils : je suis en train de lire la page de
stat (commande dont j'ignorais même l'existence avant que tu ne la
mentionnasses).

Je pense pouvoir -- en tâtonnant -- produire un tel script.

Avatar
Vincent Ramos
Luc Habert égrapsen en <dik9vu$17su$ :

find ./ -type f -exec stat -f "%p %N" {} ;
find ./ -type f -exec stat -F {} ;
find . -printf '%m%u%g%p'

xargs -0 sh -c 'while test $# -gt 0; do chmod "$1" "$4"; chown
"$2"."$3" "$4"; shift 4; done' ploum


Merci. J'ai bien pris note de vos avertissements.