88 votes

Comment empêcher rsync de chown'ing des fichiers transférés ?

J'ai établi une connexion sshfs avec un système de fichiers distant sur un serveur Linux. Je fais un rsync de mon serveur local vers le système de fichiers ftpfs. En raison de la nature de cette configuration, je ne peux pas chown n'importe quoi sur le système de fichiers sshfs.

Lorsque je fais le rsync, il essaie de chown tous les fichiers après les avoir transférés. Il en résulte des erreurs de chown, même si les fichiers sont bien transférés.

Avec rsync, y a-t-il un moyen de lui dire de ne pas essayer de chown les fichiers ? Si je rsynchronise 1000 fichiers, je me retrouve avec un journal de 1000 fichiers. chown: permission denied (error 13) des erreurs. Je sais qu'il n'y a aucun inconvénient à obtenir ces erreurs puisque la propriété des fichiers est déterminée par la configuration sshfs elle-même, mais ce serait bien de ne pas les obtenir.

129voto

aculich Points 3460

Vous exécutez probablement rsync comme ceci :

rsync -a dir/ remote:/dir/

Le site -a option selon la documentation est équivalent à : -rlptgoD

      -a, --archive    archive mode; equals -rlptgoD (no -H,-A,-X)

Vous voulez probablement supprimer le -o y -g options :

      -o, --owner                 preserve owner (super-user only)
      -g, --group                 preserve group

Donc, à la place, votre commande rsync devrait ressembler à quelque chose comme ça :

rsync -rlptD dir/ remote:/dir/

Ou comme @glglglgl fait remarquer :

rsync -a --no-o --no-g dir/ remote:/dir/

Les autres options utilisées sont les suivantes :

      -r, --recursive             recurse into directories
      -l, --links                 copy symlinks as symlinks
      -p, --perms                 preserve permissions
      -t, --times                 preserve modification times
      -D                          same as --devices --specials
          --devices               preserve device files (super-user only)
          --specials              preserve special files

27 votes

... ou simplement -a --no-o --no-g

1 votes

J'ai utilisé juste rsync -r --no-o --no-g /source/* /dest/ et le propriétaire et le groupe de mes fichiers à la destination étaient toujours modifiés en fonction de la source. Avez-vous une idée ?

0 votes

... ou simplement -a --chown=whomever:whomever de sorte que vous définissez explicitement le propriétaire et le groupe de la destination à qui vous voulez qu'ils soient.

12voto

David Points 344

Ne passez pas -o ou l'une des autres options qui l'impliquent.

5voto

Sven Points 95985

N'utilisez pas le -a car elle inclura l'option -p qui conserve les permissions. Pour cette situation, l'option -r devrait suffire.

Pour plus d'informations, voir man rsync .

5 votes

Vous êtes sûr -p est ce que je veux éviter ? La propriété est différente des permissions, n'est-ce pas ?

0 votes

J'utilise -rlt lors du téléchargement, de sorte que la propriété et les autorisations ne sont pas téléchargées, mais les horodatages et les liens sont téléchargés.

0voto

Andrew Points 642

J'ai rencontré quelque chose de similaire où rsync ne retenait pas le propriétaire et le groupe des fichiers et répertoires synchronisés à partir d'un serveur distant. Pour corriger ce problème, j'ai copié le fichier /etc/shadow , /etc/group y /etc/passwd des fichiers.

Quand j'ai lancé le rsync ci-dessous a fonctionné en conservant les permissions, les liens symboliques et la propriété.

J'avais configuré des clés ssh pour utiliser ssh sans mot de passe.

rsync -avpog user@10.1.x.x:/usr/local /usr

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X