J'essaie de définir le propriétaire et le groupe via rsync
et cela ne semble pas fonctionner.
Voici la commande:
Sudo rsync -rlptDvz --owner=cmsseren --group=cmsseren /home/serena/public_html/ -e ssh root@ip:/home/cmsseren/public_html2/
Les fichiers se synchronisent correctement mais ne semblent pas changer le propriétaire et le groupe.
Il semble que cela fonctionne correctement. Utilisation --owner
et --group
pour conserver (non défini) les noms du propriétaire et du groupe ... ce qui signifie que vous ne voulez pas qu'ils changent après le transfert.
Si vous n'utilisez pas ces options, l'utilisateur et le groupe seront remplacés par l'utilisateur appelant côté réception. Si vous souhaitez spécifier un autre utilisateur, vous devrez ajouter une commande chown
à votre script.
-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...
Version 3.1. de rsync a introduit le --usermap
et --groupmap
mentionné par Thomas, mais aussi l'option de commodité --chown
, ce qui fonctionne bien pour votre scénario.
--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.
De plus, le -o
et -g
les options sont obligatoires. Les exclure ne mettra pas à jour leur attribut respectif, mais ne produira aucune erreur.
rsync -og --chown=cmsseren:cmsseren [src] [dest]
Ceci est mentionné indirectement dans le manpage , qui indique que le --chown
option "est implémentée à l'aide de --usermap
et --groupmap
en interne ", et:
Pour le
--usermap
pour avoir un effet, le-o
(--owner
) doit être utilisée (ou implicite), et le récepteur devra être exécuté en tant que super-utilisateur (voir aussi--fake-super
option).Pour le
--groupmap
pour avoir un effet, le-g
(--groups
) doit être utilisée (ou implicite), et le récepteur devra avoir les autorisations pour définir ce groupe.
La dernière version (au moins 3.1.1) de rsync vous permet de spécifier la "propriété distante":
--usermap=tom:www-data
Change la propriété de Tom en www-data (aka PHP/Nginx). Si vous utilisez Mac en tant que client, utilisez brew pour passer à la dernière version. Et sur votre serveur, téléchargez les sources d'archives, puis "faites" ça!
Une autre solution peut être de changer l'utilisateur distant qui établit la connexion rsync
à l'aide de --rsync-path
. J'ai posté une explication complète ici: