愚かで簡単な質問についてお詫び申し上げます。ただし、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を保存(および復元)するようにバックアップシステムを変更することをお勧めします。