Je cherche une commande Linux qui peut changer la propriété de tous les fichiers appartenant à un utilisateur donné, de préférence dans un répertoire ciblé, pour un autre utilisateur spécifié.
La commande de mes rêves ressemblerait à quelque chose comme ça...
chuser -R --olduser tom --newuser jerry
ou
chuser -R --olduser 1066 --newuser 1492
Voici mon scénario... J'ai un fichier de sauvegarde (.tgz) avec des informations sur les utilisateurs et les groupes préservées. Il a été pris sur un serveur web exécutant Apache et MySQL. Les fichiers de la sauvegarde proviennent de tout le système et contiennent des fichiers de plusieurs utilisateurs différents et de plusieurs comptes de type système. Il est essentiel que les paramètres ne soient pas perdus lors de la restauration sur le nouveau serveur. Le problème est que les utilisateurs de la machine sur laquelle les fichiers sont restaurés ne correspondent pas à ceux du fichier de sauvegarde. Par exemple, les deux machines ont un utilisateur MySQL mais elles ont des identifiants différents et il y a plusieurs identifiants qui existent sur les deux machines et qui appartiennent à des utilisateurs différents. Cela signifie qu'il n'y a aucun moyen de synchroniser les utilisateurs de la nouvelle machine avec ceux de l'ancienne.
Je peux trouver tous les fichiers des utilisateurs avec la commande find comme ceci...
find /decompressed-backup-dir -uid 1050
ou
find /decompressed-backup-dir -user tom
Si, comme je le soupçonne, il n'y a pas moyen de faire ce que je veux avec une seule commande, alors il y a peut-être un moyen d'envoyer les résultats de la commande find à une autre commande pour gérer le changement de propriétaire ?
Je pourrais le faire avec un script PHP mais il y a 4GB et des dizaines de milliers de fichiers dans la sauvegarde donc je ne veux pas utiliser PHP ou Perl mais je serais heureux avec un script script qui pourrait le gérer.