Les problèmes de commande Rsync, les autorisations de propriétaire et de groupe ne changent pas


28

J'essaie de définir le propriétaire et le groupe via rsyncet 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.

Réponses:


14

Il semble que cela fonctionne correctement. Utilisez --owneret --grouppour conserver (non défini) les noms de propriétaire et de 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 chowncommande à 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...

homme rsync


1
Alors, comment puis-je afficher à distance les utilisateurs et les groupes? Via ssh? Pourriez-vous me dire comment? J'ai un accès root pour les deux serveurs. Je ne veux pas utiliser les clés ssh, mais dites-moi toutes les options que vous connaissez, je l'apprécierai. Merci pour votre réponse rapide
Arnoldo Bazaldua

La commande ressemblerait à ceci: ssh root@ip 'chown -R cmsseren:cmsseren /home/serena/public_html2/*'
user3150166

Je l'ai essayé, mais cela n'a pas fonctionné, les propriétaires et les utilisateurs sont les mêmes. Après avoir fait la commande, il dit: stdin: n'est pas un tty
Arnoldo Bazaldua

Cela fonctionne maintenant, des problèmes de pare-feu. Il ne me reste plus qu'à automatiser la saisie du mot de passe pour ssh et rsync
Arnoldo Bazaldua

Je posterai ceci dans une autre question, merci pour votre aide
Arnoldo Bazaldua

61

La version 3.1.0 de rsync a introduit le --usermapet --groupmapmentionné par Thomas, mais aussi l'option de commodité --chown, 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, les options -oet -gsont requises. 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 la page de manuel , qui indique que l' --chownoption "est implémentée en utilisant --usermapet en --groupmapinterne", et:

Pour que l' --usermapoption ait un effet, l' option -o( --owner) doit être utilisée (ou implicite), et le récepteur devra être exécuté en tant que super-utilisateur (voir également l' --fake-superoption).

Pour que l' --groupmapoption ait un effet, l' option -g( --groups) doit être utilisée (ou implicite), et le récepteur devra avoir des autorisations pour définir ce groupe.


5
Pourquoi -og est-il requis? Cela me semble illogique mais il EST également requis sur mon système.
Yai0Phah

4
@FrankScience D'accord, cela semble illogique. La même question a été posée sur la liste de diffusion rsync . "Je dirais que les documents pour --chownferaient bien de mentionner cela --owner( --super) et --groupsont nécessaires" .
TachyonVortex

5

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!


0

Une autre solution peut être de changer l'utilisateur distant qui établit la rsyncconnexion à l'aide --rsync-path. J'ai posté une explication complète ici:

/unix//a/546296/116861

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.