特定のユーザー(できればターゲットディレクトリ)に属するすべてのファイルの所有権を別の指定されたユーザーに変更できるLinuxコマンドを探しています。
私の夢のコマンドは次のようになります...
chuser -R --olduser tom --newuser jerry
または
chuser -R --olduser 1066 --newuser 1492
これが私のシナリオです...ユーザーとグループの情報が保存されたバックアップファイル(.tgz)があります。ApacheとMySQLを実行しているWebサーバーから取得されました。バックアップ内のファイルはシステム全体からのものであり、複数の異なるユーザーおよび複数のシステムタイプのアカウントからのファイルが含まれており、新しいサーバーに復元したときに設定が失われないことが重要です。問題は、ファイルを復元するマシン上のユーザーが、バックアップファイル内のユーザーと一致しないことです。たとえば、両方のマシンにMySQLユーザーがありましたが、ユーザーIDが異なり、異なるユーザーに属する両方のマシンにいくつかのユーザーIDがありました。これは、新しいマシンのユーザーを古いマシンのユーザーに同期する方法がないことを意味します。
このような検索コマンドですべてのユーザーファイルを見つけることができます...
find /decompressed-backup-dir -uid 1050
または
find /decompressed-backup-dir -user tom
私が疑うように、単一のコマンドで必要なことを行う方法がない場合は、おそらくfindコマンドの結果を別のコマンドにパイプして所有権の変更を処理する方法がありますか?
私はPHPスクリプトでこれを行うことができますが、バックアップには4GBと数万のファイルがありますので、PHPやPerlを使用したくないのですが、それを処理できるシェルスクリプトで満足です。
-uid
私が使用-user