Je recherche une commande Linux capable de changer la propriété de tous les fichiers appartenant à un utilisateur donné, de préférence dans un répertoire ciblé, en 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
C'est mon scénario ... J'ai un fichier de sauvegarde (.tgz) dans lequel sont conservées les informations relatives aux utilisateurs et aux groupes. Il a été pris à partir d'un serveur Web exécutant Apache et MySQL. Les fichiers de la sauvegarde proviennent de l'ensemble du système et contiennent des fichiers de plusieurs utilisateurs différents et de plusieurs comptes de type de 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 sur la machine sur lesquels les fichiers sont en cours de restauration 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 existe plusieurs identifiants sur les deux machines appartenant à 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 machine.
Je peux trouver tous les fichiers 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 aucun moyen de faire ce que je veux avec une seule commande, alors peut-être y a-t-il un moyen de diriger les résultats de la commande find vers une autre commande afin de gérer le changement de propriété?
Je pourrais le faire avec un script PHP mais il y a 4 Go 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 shell capable de le gérer.
-uid
je utilisé-user