rsync を root として実行しますが、ターゲット所有者は保持します。

rsync を root として実行しますが、ターゲット所有者は保持します。

私はこのトピックの多くのスレッドをチェックし、さまざまなフラグの組み合わせを試しましたが、問題を解決することはできません。

シナリオ:私はユーザーAで作業し、ソースファイルはAによって所有され、ターゲットファイルはユーザーBによって所有されます。 sudoでrsyncを使用してソースファイルをターゲットにコピーし、ターゲットファイルが引き続き所有されていることを願っています。コピー後Bに。

sudo rsync -ar src/ dst/

結果:A:A

sudo rsync -ar --no-o src/ dst/

結果:(B:Aファイルの内容が同じ場合)またはroot:A(ファイルの内容が異なる場合)

B:Bターゲットファイルを保存する方法は?

たとえば、単純さでsudo cp -r src/ dst/これを行うことができます。

答え1

使用--chown=B:B

rsyncマニュアルから:

--chown=USER:GROUP

USERこのオプションを使用すると、すべてのファイルがグループによって所有されますGROUP。 [...]またはが空の場合、USER省略GROUP されたユーザー/グループマッピングは発生しません。空の場合は末尾の GROUPコロンを省略できますが、空USER の場合は前のコロンを指定する必要があります。 [...]

ターゲット側で既存のファイルの所有権を維持する場合は、最も簡単な方法は両方を使用して、ルートが--no-group所有--no-userするすべてのエントリを他のユーザーが所有するようにターゲットファイルとディレクトリを後処理することです。

これは次の方法で行うことができます。

rsync -a --no-group --no-user src/ dst

(参考/-r暗黙)、それから-a--archive

find dst -user  root -exec chown B {} +
find dst -group root -exec chgrp B {} +

dstその後、rootユーザーまたはグループが所有するすべてのエントリを見つけて(このファイルはターゲットのrsync場所に追加された新しいファイルになります)、そのファイルの所有者とグループをに変更しますB

関連情報