私はこのトピックの多くのスレッドをチェックし、さまざまなフラグの組み合わせを試しましたが、問題を解決することはできません。
シナリオ:私はユーザー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
。