所有者と特定の所有者のグループのみを変更する

所有者と特定の所有者のグループのみを変更する

愚かで簡単な質問についてお詫び申し上げます。ただし、WebとSEを検索した後も、この特定の質問に対する回答は見つかりません。

質問:
所有者とグループを変更する方法(システム全体)ただ所有者が所有するファイルの場合特定所有者?

ユースケース:さまざまなサーバーで実行され、それをバックアップする
ために使用される多数のRasPiがあります。rsyncたとえば、残念ながら回復を実行する必要があったとき、すべての「ユーザー」ファイルの所有者とグループは元の所有者ではありませんpi:piでした。adminuser:adminuser

所有しているファイルを見つけずにpi所有者/グループの再割り当てを実行する方法はありますか?

編集:rsyncコマンドは次のとおりです。

sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --exclude-from="${exc_path}" "${src_path}" "${dst_addr}:${dst_path}"

答え1

バックアップ(およびリカバリ)におよび-numeric-ids/または使用していません。コマンドを少し-fake-super変更すると、rsyncマッピングが正しく保存され復元されます。

この例では、接続のリモート側で次のオプションである偽造を適用するように-M指示されます。rsync追加された副作用は、リモート側(バックアップが保存されている場所)がrootとして実行される必要がないことです。

これにより、クライアントからバックアップサーバーにバックアップがプッシュされます。

sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --numeric-ids -M--fake-super --exclude-from="${exc_path}" "${src_path}" "${dst_addr}:${dst_path}"

これにより、クライアントからバックアップ(復元など)が抽出されます。

sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --numeric-ids -M--fake-super --exclude-from="${exc_path}" "${dst_addr}:${dst_path}" "${src_path}"

これはバックアップサーバーで実行され、バックアップをクライアントにプッシュします(リストアなど)。

sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --numeric-ids --fake-super "${dst_path}" "${src_host}:${src_path}"

答え2

各ファイルは所有者情報を個別に保存し、所有者に基づいてファイルを索引付けするデータ構造はありません。したがって、何をしても、これらのファイルを見つけて各ファイルのUIDを個別に変更する必要があります。幸いなことに、これは難しくありません。これを行う必要があります:

find "$dir" -user olduser -exec chown newuser {} +

もちろん、特に複数のユーザーに属するファイルをバックアップする場合は、正しいUIDを保存(および復元)するようにバックアップシステムを変更することをお勧めします。

関連情報