Monté un disco en /data
. Esto está vacío en este momento.
Necesito rsync
realizarlo mkdir -p
como mkdir
el archivo en el que debo estar en el nivel 4, es decir , /data/dir_1/dir_2/dir_3/filename
cuando y no existe.dir_1
dir_2
dir_3
Si creo los subdirectorios necesarios manualmente, puedo realizar rsync usando el siguiente comando:
rsync -avz source_diretory/ /data/dir_1/dir_2/dir_3
Pero si no creo los subdirectorios, este comando arroja un error:
mkdir: cannot create directory ‘/data/dir_1/dir_2/dir_3/’: No such file or directory
Intenté buscar en Google, leer la página de manual de rsync, intenté usarlo -r
-R
pero no pude hacerlo funcionar.
¿Puede rsync
realizar algo así mkdir -p
o está fuera de su alcance?
Respuesta1
rsync
El comando no crea un árbol de directorios, por lo que puedes hacerlo ejecutando:
mkdir -p /data/dir_1/dir_2/dir_3
antes rsync
del comando o uso--rsync-rutaopciones:
--rsync-path=PROGRAMA Utilice esto para especificar qué programa se ejecutará en la máquina remota para iniciar rsync.
Tu comando debería ser:
rsync -avz source_diretory/ --rsync-path="mkdir -p /data/dir_1/dir_2/dir_3 && rsync" /data/dir_1/dir_2/dir_3
Aquí tienes una útilenlace.
Respuesta2
Una forma más corta en Linux de crear rutas de destino de rsync es utilizar la variable especial '$_'. (Creo, pero no puedo confirmarlo, que también es lo mismo en OSX).
'$_' contiene el valor del último argumento del comando anterior ejecutado. Entonces la pregunta podría responderse con:
mkdir -p /data/dir_1/dir_2/dir_3 && rsync -avz source_directory/ $_