web-dev-qa-db-fra.com

Comment faire arbitrairement les propriétaires d'utilisateurs / de groupes dans rsync

J'ai besoin de Rsync un répertoire à un serveur distant de sorte que tous les fichiers appartenant à l'utilisateur X et le groupe Y sur la machine source (locale) soient mappés sur l'utilisateur W et le groupe Z sur la machine de destination (distante). Si possible en utilisant SSH comme le transport, mais si je dois utiliser le démon RSYNC, c'est bien aussi.

Y-a-t-il un moyen de faire ça? Je cherche un moyen d'établir une carte d'utilisateur/groupe arbitraire, telle que

local user X => remote user W
local group Y => remote group Z
... and as many of these as needed.

Cela devrait être un cas d'usage assez commun, n'est-ce pas? Par exemple. J'ai des fichiers sur mon ordinateur local où mon nom d'utilisateur est X et je dois les télécharger sur un serveur Web où ils doivent appartenir à un utilisateur donné qui n'a pas le même nom ni le même uid que mon utilisateur ordinateur personnel.

Je ne trouve pas que sur la page de l'homme de Rsync ...

Linux sur la machine locale et distante (Ubuntu local, Centos Remote)

Commande j'ai essayé: rsync -avz/chemin/à/à/à la racine [email protected]:/chemin/à/à distance

17
matteo

Si vous souhaitez modifier la propriété des fichiers vers des utilisateurs arbitraires, vous devez d'abord être une racine sur la boîte de destination.

Je ne pense pas qu'il existe une telle fonctionnalité intégrée par RSYNC, mais vous pouvez l'atteindre en exécutant un find après avoir effectué votre RSYNC.

Peut-être qu'une commande comme celle-ci fera l'affaire: par exemple, traduire de UID 1000 => 505 et UID 1001 => 700:

find /your/rsynced/path -user 1000 -exec chown 505 {} \;
find /your/rsynced/path -user 1001 -exec chown 700 {} \;

Si vous avez de nombreux utilisateurs, vous pouvez envisager d'utiliser une boucle avec une cartographie, dans votre langue de prédilection.

S'amuser.

0
Adrien M.