usuario usar servidores remoto orden incremental entre encontró contraseña con como comando rsync scp

usar - rsync remoto



rsync-crear todos los directorios padre faltantes? (5)

Estoy buscando un programa similar a rsync que creará los directorios principales que faltan en el lado remoto.

Por ejemplo, si tengo /top/a/b/c/d en un servidor y solo /top/a existe en el servidor remoto, quiero copiar d al servidor remoto y también crear los directorios c .

El comando:

rsync /top/a/b/c/d remote:/top/a/b/c

no funcionará porque /tmp/a/b no existe en el servidor remoto. Y si existiera, el archivo d se copiaría a la ruta /top/a/b/c .

Esto se puede hacer con rsync usando los interruptores --include y --include , pero es muy complicado, por ejemplo:

rsync -v -r a dest:dir / --include ''a/b'' / --include ''a/b/c'' / --include ''a/b/c/d'' / --include ''a/b/c/d/e'' / --exclude ''a/*'' / --exclude ''a/b/*'' / --exclude ''a/b/c/*'' / --exclude ''a/b/c/d/*''

solo copiará a/b/c/d/e a dest:dir/a/b/c/d/e incluso si los directorios intermedios tienen archivos. (Nota: los incluidos deben preceder a los excluye.)

¿Hay más opciones?


Estaba buscando una mejor solución, pero la mía parece ser más adecuada cuando tiene demasiados subdirectorios para crearlos manualmente.

Simplemente usa cp como paso intermedio con la opción --parents

cp --parents /your/path/sub/dir/ /tmp/localcopy rsync [options] /tmp/localcopy/* remote:/destination/path/

cp --parents creará la estructura para ti.

Puede llamarlo desde cualquier subcarpeta si desea que solo se copie un subconjunto de las carpetas principales.


Le sugiero que haga cumplir la existencia manualmente:

ssh user@remote mkdir -p /top/a/b/c rsync /top/a/b/c/d remote:/top/a/b/c

esto crea la carpeta de destino si no existe ya.


Usted puede estar buscando

rsync -aR

por ejemplo:

rsync -a --relative /top/a/b/c/d remote:/

Vea también este truco en otra pregunta .


--relative no me funciona porque tenía una configuración diferente. Tal vez simplemente no entendí cómo funciona - --relative , pero encontré que el

ssh remote mkdir -p /top/a/b/c rsync /top/a/b/c/d remote:/top/a/b/c

Es fácil de entender y hace el trabajo.