Ich suche nach einem Linux-Befehl, der den Besitz aller Dateien, die zu einem bestimmten Benutzer gehören, vorzugsweise in einem Zielverzeichnis, zu einem anderen angegebenen Benutzer ändern kann.
Mein Traumbefehl würde ungefähr so aussehen ...
chuser -R --olduser tom --newuser jerry
oder
chuser -R --olduser 1066 --newuser 1492
Dies ist mein Szenario ... Ich habe eine Sicherungsdatei (.tgz), in der Benutzer- und Gruppeninformationen gespeichert sind. Es stammt von einem Webserver, auf dem Apache und MySQL ausgeführt werden. Die Dateien in der Sicherung stammen aus dem gesamten System und enthalten Dateien von mehreren verschiedenen Benutzern und mehreren Systemtypkonten. Es ist wichtig, dass die Einstellungen beim Wiederherstellen auf dem neuen Server nicht verloren gehen. Das Problem ist, dass die Benutzer auf dem Computer, auf dem die Dateien wiederhergestellt werden, nicht mit denen in der Sicherungsdatei übereinstimmen. Beispielsweise hatten beide Maschinen einen MySQL-Benutzer, aber sie haben unterschiedliche Benutzer-IDs, und es gab mehrere Benutzer-IDs, die auf beiden Maschinen vorhanden waren und unterschiedlichen Benutzern gehörten. Dies bedeutet, dass die Benutzer auf dem neuen Computer nicht mit denen auf dem alten Computer synchronisiert werden können.
Ich kann alle Benutzerdateien mit dem Befehl find wie folgt finden ...
find /decompressed-backup-dir -uid 1050
oder
find /decompressed-backup-dir -user tom
Wenn es, wie ich vermute, nicht möglich ist, mit einem einzelnen Befehl das zu tun, was ich will, gibt es vielleicht eine Möglichkeit, die Ergebnisse des Befehls find an einen anderen Befehl weiterzuleiten, um die Eigentümeränderung zu handhaben?
Ich könnte dies mit einem PHP-Skript tun, aber das Backup enthält 4 GB und Zehntausende von Dateien. Daher möchte ich weder PHP noch Perl verwenden, wäre aber mit einem Shell-Skript zufrieden, das damit umgehen kann.
-uid
ich verwendet-user