Szukam polecenia systemu Linux, które może zmienić własność wszystkich plików należących do danego użytkownika, najlepiej w katalogu docelowym, na innego określonego użytkownika.
Moje polecenie marzeń wyglądałoby mniej więcej tak ...
chuser -R --olduser tom --newuser jerry
lub
chuser -R --olduser 1066 --newuser 1492
To jest mój scenariusz ... Mam plik kopii zapasowej (.tgz) z zachowanymi informacjami o użytkownikach i grupach. Został pobrany z serwera WWW z Apache i MySQL. Pliki w kopii zapasowej pochodzą z całego systemu i zawierają pliki kilku różnych użytkowników i kilku kont typu systemowego. Kluczowe jest, aby po przywróceniu na nowym serwerze ustawienia nie zostały utracone. Problem polega na tym, że użytkownicy na komputerze przywracają pliki, aby nie pasowały do tych z pliku kopii zapasowej. Na przykład obie maszyny miały użytkownika MySQL, ale mają różne identyfikatory użytkowników i istnieje kilka identyfikatorów użytkowników na obu komputerach należących do różnych użytkowników. Oznacza to, że nie ma sposobu na zsynchronizowanie użytkowników na nowym komputerze z użytkownikami na starym komputerze.
Mogę znaleźć wszystkie pliki użytkowników za pomocą polecenia find w ten sposób ...
find /decompressed-backup-dir -uid 1050
lub
find /decompressed-backup-dir -user tom
Jeśli, jak podejrzewam, nie ma sposobu, aby zrobić to, co chcę za pomocą jednego polecenia, to może istnieje sposób na przekazanie wyników polecenia find do innego polecenia, aby obsłużyć zmianę własności?
Mógłbym to zrobić za pomocą skryptu PHP, ale w kopii zapasowej są 4 GB i dziesiątki tysięcy plików, więc nie chcę używać PHP ani Perla, ale byłbym zadowolony ze skryptu powłoki, który mógłby to obsłużyć.
-uid
użyłem-user