it-swarm.com.de

Rsync-Befehlsprobleme, Eigentümer- und Gruppenberechtigungen ändern sich nicht

Ich versuche, Eigentümer und Gruppe über rsync festzulegen, und es scheint nicht zu funktionieren.

Dies ist der Befehl:

Sudo rsync -rlptDvz --owner=cmsseren --group=cmsseren /home/serena/public_html/ -e ssh [email protected]:/home/cmsseren/public_html2/

Die Dateien werden korrekt synchronisiert, scheinen jedoch den Eigentümer und die Gruppe nicht zu ändern.

28

Es klingt wie es richtig funktioniert. Verwenden --owner und --group um die Eigentümer- und Gruppennamen beizubehalten (nicht festgelegt) ... was bedeutet, dass Sie nicht möchten, dass sie sich nach der Übertragung ändern.

Wenn Sie diese Optionen nicht verwenden, werden der Benutzer und die Gruppe auf der empfangenden Seite in den aufrufenden Benutzer geändert. Wenn Sie einen anderen Benutzer angeben möchten, müssen Sie Ihrem Skript den Befehl chown hinzufügen.

-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

Version 3.1. von rsync führte die von Thomas erwähnten --usermap Und --groupmap Ein, aber auch die Komfortoption --chown, was für Ihr Szenario gut funktioniert.

--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.

Auch die -o und -g Optionen sind erforderlich. Wenn Sie sie ausschließen, wird das jeweilige Attribut nicht aktualisiert, es wird jedoch kein Fehler ausgegeben.

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

Dies wird indirekt in der manpage erwähnt, die besagt, dass die Option --chown "Intern mit --usermap Und --groupmap Implementiert wird" und:

Damit die Option --usermap Wirkung hat, muss die Option -o (--owner) Verwendet (oder impliziert) werden, und der Empfänger muss als Super- ausgeführt werden Benutzer (siehe auch die Option --fake-super).

Damit die Option --groupmap Auswirkungen hat, muss die Option -g (--groups) Verwendet (oder impliziert) werden, und der Empfänger muss über Berechtigungen zum Festlegen dieser Gruppe verfügen .

64
David Thompson

In der letzten Version (mindestens 3.1.1) von rsync können Sie den "Remote-Besitz" angeben:

--usermap=tom:www-data

Ändert den Besitz von Tom in WWW-Daten (auch bekannt als PHP/Nginx). Wenn Sie Mac als Client verwenden, aktualisieren Sie mit Brew auf die letzte Version. Laden Sie auf Ihrem Server Archivquellen herunter und "machen" Sie es dann!

5
Thomas Decaux

Eine andere Lösung könnte darin bestehen, den Remotebenutzer, der die rsync -Verbindung herstellt, mit --rsync-path Zu ändern. Ich habe hier eine vollständige Erklärung gepostet:

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

0
Samuel Phan