Estou procurando um comando Linux que possa alterar a propriedade de todos os arquivos pertencentes a um determinado usuário, de preferência em um diretório de destino, para outro usuário especificado.
Meu comando dos sonhos seria algo como isto ...
chuser -R --olduser tom --newuser jerry
ou
chuser -R --olduser 1066 --newuser 1492
Este é o meu cenário ... Eu tenho um arquivo de backup (.tgz) com informações de usuário e grupo preservadas. Foi retirado de um servidor da Web executando Apache e MySQL. Os arquivos no backup são de todo o sistema e contêm arquivos de vários usuários diferentes e várias contas do tipo sistema, e é importante que, quando restaurados no novo servidor, as configurações não sejam perdidas. O problema é que os usuários na máquina em que os arquivos estão sendo restaurados para não corresponder aos do arquivo de backup. Por exemplo, ambas as máquinas tinham um usuário MySQL, mas eles têm diferentes IDs de usuário e existem vários IDs de usuário existentes nas duas máquinas que pertencem a usuários diferentes. Isso significa que não há como sincronizar os usuários na nova máquina com os da máquina antiga.
Eu posso encontrar todos os arquivos de usuários com o comando find assim ...
find /decompressed-backup-dir -uid 1050
ou
find /decompressed-backup-dir -user tom
Se, como suspeito, não há como fazer o que quero com um único comando, talvez haja uma maneira de canalizar os resultados do comando find para outro comando para lidar com a mudança de propriedade?
Eu poderia fazer isso com um script PHP, mas existem 4 GB e dezenas de milhares de arquivos no backup, por isso não quero usar PHP ou Perl, mas ficaria feliz com um script de shell capaz de lidar com isso.
-uid
usar-user