Я ищу команду Linux, которая может изменить владельца всех файлов, принадлежащих данному пользователю, предпочтительно в целевом каталоге, другому указанному пользователю.
Команда моей мечты будет выглядеть примерно так ...
chuser -R --olduser tom --newuser jerry
или
chuser -R --olduser 1066 --newuser 1492
Это мой сценарий ... У меня есть резервный файл (.tgz) с информацией о пользователях и группах. Он был взят с веб-сервера под управлением Apache и MySQL. Файлы в резервной копии находятся по всей системе и содержат файлы от нескольких разных пользователей и нескольких учетных записей системного типа, и важно, чтобы при восстановлении на новом сервере настройки не терялись. Проблема в том, что у пользователей на машине файлы восстанавливаются, чтобы не совпадать с теми, что в файле резервной копии. Например, на обеих машинах был пользователь MySQL, но у них разные идентификаторы пользователей, и на обеих машинах было несколько идентификаторов пользователей, принадлежащих разным пользователям. Это означает, что нет возможности синхронизировать пользователей на новом компьютере с пользователями на старом компьютере.
Я могу найти все файлы пользователей с помощью команды find, как это ...
find /decompressed-backup-dir -uid 1050
или
find /decompressed-backup-dir -user tom
Если, как я подозреваю, нет способа сделать то, что я хочу, с помощью одной команды, то, возможно, есть способ передать результаты команды find другой команде для обработки изменения владельца?
Я мог бы сделать это с помощью скрипта PHP, но в резервной копии есть 4 ГБ и десятки тысяч файлов, поэтому я не хочу использовать PHP или Perl, но я был бы рад сценарию оболочки, который мог бы справиться с этим.
-uid
я использовал-user