2012-02-11 17 views
26

Ejemplo:Cómo forzar rsync para crear carpeta de destino

rsync /tmp/fol1/fol2/fol3/foln [email protected]:/tmp/fol1/fol2/fol3/foln 

Mi problema principal es la carpeta/tmp/Fol1 no existe en la máquina remota.

¿Qué argumentos puedo usar para forzar a rsync a crear este árbol?

+0

La misma pregunta aquí: [rsync: ¿cómo puedo configurarlo para crear el directorio de destino en el servidor?] (Http://stackoverflow.com/questions/1636889/rsync-how-can-i-configure-it-to- create-target-directory-on-server) – mivk

Respuesta

1

Puede hacer esto a través de bash y abrir un túnel ssh para crear la estructura de archivos que necesita para luego sincronizar los datos. ¿Estas carpetas temporales cambian cada vez que se realiza esta sincronización? por ejemplo, ¿es para cada día de la semana?

ssh [email protected] 
mkdir -p tmp/fol1 
rsync avz /tmp/fol1/fol2/fol3/foln [email protected]:/tmp/fol1/fol2/fol3/foln 
fi 
14

Un truco para hacerlo es utilizar el parámetro --rsync-path con el siguiente valor:

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

Con --rsync-ruta se puede especificar qué programa va a ser utilizada para iniciar rsync en la máquina remota y se ejecuta con la ayuda de un shell.

22

Me encontré con el mismo problema hoy y encontré la solución here.

Puede hacerlo:

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

o:

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

para crear /tmp/foo/bar/baz.c en la máquina remota.

ver --relative/-R sección de man rsync para más detalles.

+1

Esta es una solución muy buena. Pero no funciona con el puerto Cygwin de rsync :( – greydet

Cuestiones relacionadas