web-dev-qa-db-ja.com

Rsyncコマンドの問題、所有者とグループの権限は変更されません

rsyncを介して所有者とグループを設定しようとしていますが、機能していないようです。

これはコマンドです:

Sudo rsync -rlptDvz --owner=cmsseren --group=cmsseren /home/serena/public_html/ -e ssh root@ip:/home/cmsseren/public_html2/

ファイルは正しく同期されますが、所有者とグループは変更されないようです。

28

正常に動作しているようです。使用する --ownerおよび--group topreserve(未設定)所有者とグループの名前...転送後にそれらを変更しないことを意味します。

これらのオプションを使用しない場合、ユーザーとグループは受信側で呼び出し元のユーザーに変更されます。他のユーザーを指定する場合は、chownコマンドをスクリプトに追加する必要があります。

-o, --owner
    This option causes rsync to set the owner of the destination file to be 
    the same as  the source file, but only if the receiving rsync is being run 
    as the super-user (see also the --super and --fake-super options). Without 
    this option, the owner of new and/or transferred files are set to the invoking 
    user on the receiving side...

-g, --group
    This option causes rsync to set the group of the destination file to be the same as 
    the source file. If the receiving program is not running as the super-user (or if
    --no-super was specified), only groups that the invoking user on the receiving side
    is a member of will be preserved. Without this option, the group is set to the default
    group of the invoking user on the receiving side...

man rsync

14
user3150166

バージョン3.1. rsyncの導入により、トーマスが言及した--usermap--groupmapが導入されましたが、便利なオプション--chown、これはシナリオに適しています。

--chown=USER:GROUP
    This option forces all files to be owned by USER with group GROUP.
    This  is  a  simpler  interface  than  using  --usermap  and  --groupmap directly,
    but  it  is implemented using those options internally, so you cannot mix them.
    If either the USER or GROUP is empty, no mapping for the omitted user/group will
    occur.  If GROUP is empty, the trailing colon may be omitted, but if USER is
    empty, a leading colon must  be supplied.

    If you specify "--chown=foo:bar, this is exactly the same as specifying
    "--usermap=*:foo --groupmap=*:bar", only easier.

また、-oおよび-gオプションが必要です。それらを除外すると、それぞれの属性の更新に失敗しますが、エラーは発生しません。

rsync -og --chown=cmsseren:cmsseren [src] [dest]

これは manpage で間接的に言及されており、--chownオプションは「内部で--usermapおよび--groupmapを使用して実装されている」と述べており、さらに:

--usermapオプションを有効にするには、-o--owner)オプションを使用(または暗黙的に)する必要があり、レシーバーがスーパーユーザーとして実行されている必要があります( --fake-superオプションも)。

--groupmapオプションを有効にするには、-g--groups)オプションを使用(または暗黙的に)する必要があり、受信者はそのグループを設定する権限を持っている必要があります。

64
David Thompson

Rsyncの最新バージョン(少なくとも3.1.1)では、「リモート所有権」を指定できます。

--usermap=tom:www-data

トムの所有権をwww-data(別名PHP/Nginx)に変更します。 Macをクライアントとして使用している場合は、brewを使用して最新バージョンにアップグレードします。そして、サーバー上でアーカイブソースをダウンロードし、「作成」してください。

5
Thomas Decaux

別の解決策は、--rsync-pathを使用してrsync接続を確立するリモートユーザーを変更することです。私はここに完全な説明を投稿しました:

https://unix.stackexchange.com/a/546296/116861

0
Samuel Phan