Lister les fichiers en fonction de leurs droits - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 09-12-2013 à 14:15:40
En shell tu peux tester directement si tu as le droit en lecture ou pas sur un fichier via l'option -r du test.
Sinon dans le find tu as l'option -perm : par exemple -perm -o=r te retourne tous les fichiers ou le owner a les droits en lecture. Après, j'ai pas trouvé le moyen d'inverser le test (j'ai pas cherché longtemps non plus ), donc il te faudra peut-être comparer avec les listes globales des fichiers pour trouver les manquants (la commande comm fait ça très bien).
Toujours dans le find, avec le printf tu peux afficher les droits du fichier en octal (%m du printf) => Si le nombre est inférieur à 400 forcément le propriétaire n'a pas les accès en lecture. Gaffe au setuid et compagnie par contre, un fichier en 4111 n'a pas les droits en lecture.
Marsh Posté le 09-12-2013 à 15:15:11
On dirait que find . -perm 000 fonctionne pas mal ! Merci du tuyau !!!
Marsh Posté le 28-12-2013 à 20:09:47
Après le truc que tu ne précises pas, c'est si les fichiers en question doivent où non passer dans la sauvegarde, si oui alors il faut simplement remettre les droits sur ces fichiers là (ceux dans l'arbo de la save) juste avant la procédure de rsync, c'est juste un petit chmod à faire une fois que tu as la liste des fichiers concerné.
Chez moi les script de backup avec rsync ont toujours commencé avec un petit chmod
Marsh Posté le 06-01-2014 à 22:00:57
C'est plus compliqué que ça, car la synchro est lancée depuis un serveur linux CentOS qui vient chercher des données sur un Windows Server 2008 sur lequel tourne un DeltaCopy... C'est à ce moment que le passage des droits semblent chaotiques pour certains fichiers... Ils sont bien synchro mais se retrouvent sur le serveur de backup avec des droits à 000 et là c'est le drame pour les manipuler ensuite. Sachant que c'est 0,1% des fichiers qui posent soucis... Je cherche toujours la solution, ou plutot l'origine du problème, sur le serveur Windows. Mais la commande "find" trouvée ici m'a permis de réparer les fichiers malades sur le serveur Linux !
Ouf quel pavé !
Marsh Posté le 09-12-2013 à 13:51:17
Bonjour,
J'ai mis en place un back up à base de rsync. Lors du rapatriement de fichiers Windows vers Linux, j'ai quelques fois un petit bug (encore non identifié): je me retrouver avec des fichiers sans aucun droit sous Linux.
Exemple:
24 -rwxr-xr-x 29 bckusr staff 22528 Aug 8 15:21 Tata.txt
24 ---------- 29 bckusr staff 22528 Sep 12 16:23 Toto.txt
Lors de la synchronisation suivante, mon script ne pourra plus rien faire sur Toto.txt puisque tous les droits sont fermés.
Je sais que le mieux est de trouver l'origine du problème et d'empêcher la création de ces fichiers dans cet état. Mais en attendant, je voudrais néttoyer un peu mon arborescence sous Linux et localiser tous ces fichiers, pour les détruire et qu'ils soient de nouveau sauvegardés au prochain backup dans la nuit.
Je ne cherche pas une commande qui va changer tous les droits de mon arborescence, je souhaite ne pas perdre ce type d'information dans mon backup...
Donc ma recherche c'est une commande "find" magique qui me ressorte tous les fichiers "sans droit" de mon arborescence.
Merci de votre aide.
---------------
Mon projet de coffret multimédia: http://maison2valerie.wordpress.co [...] hapitre-1/