rsync lanza mkdir: no se puede crear el directorio '/data/dir_1/dir_2/dir_3/': no ​​existe tal archivo o directorio

rsync lanza mkdir: no se puede crear el directorio '/data/dir_1/dir_2/dir_3/': no ​​existe tal archivo o directorio

Monté un disco en /data. Esto está vacío en este momento.

Necesito rsyncrealizarlo mkdir -pcomo mkdirel archivo en el que debo estar en el nivel 4, es decir , /data/dir_1/dir_2/dir_3/filenamecuando y no existe.dir_1dir_2dir_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 -Rpero no pude hacerlo funcionar.

¿Puede rsyncrealizar algo así mkdir -po está fuera de su alcance?

Respuesta1

rsyncEl comando no crea un árbol de directorios, por lo que puedes hacerlo ejecutando:

 mkdir -p /data/dir_1/dir_2/dir_3

antes rsyncdel 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/ $_

información relacionada