180 votes

rsync: comment puis-je le configurer pour créer un répertoire cible sur le serveur?

Je voudrais rsync de l'ordinateur local au serveur. sur un répertoire qui n'existe pas et je veux que rsync crée ce répertoire sur le serveur en premier. Comment puis je faire ça ?

204voto

mivk Points 1352

Si vous avez plus de la dernière feuille répertoire doit être créé, vous pouvez soit exécuter un distinct ssh ... mkdir -p première, ou de l'utilisation de l' --rsync-path truc comme expliqué ici :

rsync -a --rsync-path="mkdir -p /tmp/x/y/z/ && rsync" $source user@remote:/tmp/x/y/z/

Ou utiliser l' --relative option comme suggéré par Tony. Dans ce cas, vous ne spécifiez la racine de la destination, qui doit exister, et non pas la structure de répertoire de la source, qui vont être créés:

rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/

De cette façon, vous allez vous retrouver avec /pre_existing/dir/new/x/y/z/

39voto

user624492 Points 414

En supposant que vous utilisiez ssh pour vous connecter à rsync, pourquoi ne pas envoyer une commande ssh avant:

 ssh user@server mkdir -p existingdir/newdir
 

s'il existe déjà, rien ne se passe

24voto

Tony Points 128

L'option -R, --relative fera.

Par exemple: si vous voulez sauvegarder /var/named/chroot et créer la même structure de répertoires sur le serveur distant, alors -R fera.

16voto

kdubs Points 492

cela a fonctionné pour moi:

  rsync /dev/null node:existing-dir/new-dir/
 

Je reçois ce message:

 skipping non-regular file "null"
 

mais je n'ai pas à m'inquiéter d'avoir un répertoire vide qui traîne.

6voto

Chris Dennis Points 79

Je ne pense pas que vous puissiez le faire avec une commande rsync, mais vous pouvez d'abord "créer" le répertoire supplémentaire comme ceci:

 rsync --recursive emptydir/ destination/newdir
 

où "emptydir" est un répertoire vide local (que vous devrez peut-être d'abord créer en tant que répertoire temporaire).

C'est un peu un bidouillage, mais ça marche pour moi.

à votre santé

Chris

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X