Estoy buscando un comando de Linux que pueda cambiar la propiedad de todos los archivos que pertenecen a un usuario determinado, preferiblemente en un directorio de destino, a otro usuario especificado.
El comando de mis sueños se vería así ...
chuser -R --olduser tom --newuser jerry
o
chuser -R --olduser 1066 --newuser 1492
Este es mi escenario ... Tengo un archivo de copia de seguridad (.tgz) con información de usuarios y grupos conservada. Fue tomado de un servidor web que ejecuta Apache y MySQL. Los archivos en la copia de seguridad provienen de todo el sistema y contienen archivos de varios usuarios diferentes y varias cuentas de tipo de sistema, y es clave que cuando se restaure en el nuevo servidor, la configuración no se pierda. El problema es que los usuarios de la máquina en los que se restauran los archivos no coinciden con los del archivo de copia de seguridad. Por ejemplo, ambas máquinas tenían un usuario de MySQL pero tienen diferentes ID de usuario y existen varias ID de usuario que existían en ambas máquinas que pertenecen a diferentes usuarios. Esto significa que no hay forma de sincronizar los usuarios de la nueva máquina con los de la máquina anterior.
Puedo encontrar todos los archivos de los usuarios con el comando find como este ...
find /decompressed-backup-dir -uid 1050
o
find /decompressed-backup-dir -user tom
Si, como sospecho, no hay forma de hacer lo que quiero con un solo comando, ¿tal vez hay una manera de canalizar los resultados del comando find a otro comando para manejar el cambio de propiedad?
Podría hacer esto con un script PHP, pero hay 4GB y decenas de miles de archivos en la copia de seguridad, por lo que no quiero usar PHP o Perl, pero estaría contento con un script de shell que pudiera manejarlo.
-uid
que solía usar-user