rsync définir le propriétaire du groupe, autorisation de groupe


10

Je souhaite utiliser rsync pour transférer des fichiers de mon ordinateur vers un système Linux distant. Quelle que soit la propriété du groupe du fichier local, je souhaite définir ces valeurs du côté distant.

Si j'étais sur le système Linux distant, je pourrais créer le répertoire et définir la propriété et les autorisations comme suit:

mkdir my_directory
chown :my_group my_directory
chmod 775 my_directory

Si je crée le répertoire localement et que j'utilise rsync (rappelez-vous, je n'ai pas mon_groupe localement), je fais:

rsync -ae ssh --chmod=ug+rw,Dug+rwx my_directory remoteserver:dest

Cela fonctionne, mais je ne peux pas comprendre comment définir le propriétaire du groupe via rsync. Si je fais un chmod g+s dest, mon_répertoire a le propriétaire du groupe correct mais tous les fichiers à l'intérieur ont le propriétaire du groupe incorrect.


Salut @ChrisInEdmonton, avez-vous trouvé un moyen de faire fonctionner cela à la fin? Je suis actuellement confronté au même problème, j'exécute cygwin pour rsync des fichiers de Windows vers une boîte Linux, mais je ne peux pas définir l'ID de groupe correct des nouveaux fichiers envoyés via: rsync -avz --delete --exclude "*.git" --chmod=ug=rwx,o=rx /cygdrive/d/projx/ john@123.123.123.123:/var/prox/les fichiers atterrissent sous la forme john: john au lieu de john: projx ( où projx est le nom du groupe)
John

1
Je viens de trouver que rsync 3.1 inclut --groupmap=*:group-name'.. juste après avoir posté ha.
John

Réponses:


8

Dès cette minute, je cherche moi-même un moyen de le faire dans l'opération rsync, contrairement à une opération ultérieure. Je souhaite que certains fichiers ne soient pas lisibles par le monde et affectent un groupe, limitant ainsi l'accès aux processus du serveur distant au sein de ce groupe. Mais je n'en ai pas trouvé.

La seule chose que je peux imaginer est de:

  1. utilisez --delay-updates pour placer les fichiers distants dans une opération plus atomique et instantanée
  2. g + rwx, o + rwx dans l'option rsync --chmod

puis exécutez:

ssh remoteserver chgrp -R {groupname} /my/dest/folder/* && \
chmod -R o-rwx /my/dest/folder/*

Oui, je pense que c'est ce que nous allons faire. Je suis surpris qu'il n'y ait aucun moyen que vous ou moi puissions trouver cela avec rsync, mais bon.
ChrisInEdmonton

6

Je pense que le drapeau -p est absent de votre commande ..

--chmod

Cette option indique à rsync d'appliquer une ou plusieurs chaînes "chmod" séparées par des virgules à l'autorisation des fichiers dans le transfert. La valeur résultante est traitée comme s'il s'agissait des autorisations fournies par le côté expéditeur pour le fichier, ce qui signifie que cette option peut sembler n'avoir aucun effet sur les fichiers existants si --perms n'est pas activé .


1
Le -pdrapeau est implicitement inclus dans le cadre de l' -aoption (archive).
Anthony Geoghegan
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.