web-dev-qa-db-fra.com

Comment forcer rsync à créer un dossier de destination

Exemple:

rsync /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln

Mon problème principal est que le dossier/tmp/fol1 n'existe pas sur la machine distante.

Quels arguments puis-je utiliser pour forcer rsync à créer cet arbre?

28
CrazySquirrel

J'ai rencontré le même problème aujourd'hui et j'ai trouvé la solution ici .

Vous pouvez soit faire:

rsync -avR foo/bar/baz.c remote:/tmp/

ou:

rsync -avR somedir/./foo/bar/baz.c remote:/tmp/

créer /tmp/foo/bar/baz.c dans la machine distante.

voir la section --relative/-R de man rsync pour plus de détails.

22
Anand Chitipothu

Une astuce consiste à utiliser le paramètre --rsync-path avec la valeur suivante:

--rsync-path="mkdir -p /tmp/fol1 && rsync"

Avec --rsync-path, vous pouvez spécifier le programme qui sera utilisé pour démarrer rsync sur la machine distante et qui sera exécuté à l'aide d'un shell.

16
barracel

Vous pouvez le faire via bash et ouvrir un tunnel ssh. Créez la structure de fichier dont vous avez besoin pour ensuite rsync les données Ces dossiers temporaires changeront-ils chaque fois que cette synchronisation sera effectuée? Par exemple, est-ce pour chaque jour de la semaine? 

ssh user@address
mkdir -p tmp/fol1
rsync avz /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln
fi
1
Paperghost