Me gustaría rsyncdesde la computadora local al servidor. En un directorio que no existe, y rsyncprimero quiero crear ese directorio en el servidor.
¿Cómo puedo hacer eso?
Si tiene más de la última hoja de directorio para crear, puede ejecutar un ssh ... mkdir -pprimero por separado o usar el --rsync-pathtruco como se explica aquí :
rsync -a --rsync-path="mkdir -p /tmp/x/y/z/ && rsync" $source user@remote:/tmp/x/y/z/
O use la --relativeopción sugerida por Tony. En ese caso, solo especifica la raíz del destino, que debe existir, y no la estructura de directorios de la fuente, que se creará:
rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/
De esta manera, terminará con / pre_existing / dir / new / x / y / z /
Y si desea que se cree "y / z /", pero no dentro de "new / x /", puede agregar ./dónde desea --relativecomenzar:
rsync -a --relative /new/x/./y/z/ user@remote:/pre_existing/dir/
crearía / pre_existing / dir / y / z /.
mkdir, así que estoy usando el hack:--rsync-path="echo f > /public/.keep && rsync /public/.keep /public/newfolder/ && rsync" \crea un archivo adicional pero puedes eliminarlo más tarde.&&?Suponiendo que está utilizando ssh para conectar rsync, ¿qué hay de enviar un comando ssh antes:
si ya existe, no pasa nada
fuente
rsync, por lo tanto, sin respuesta.sshno es compatible y sersyncconecta alrsync daemonextremo remoto.La
-R, --relativeopción hará esto.Por ejemplo: si desea hacer una copia de seguridad
/var/named/chrooty crear la misma estructura de directorios en el servidor remoto, entonces-Rhará exactamente eso.fuente
/./la ruta de origen. Vea la página del manual para más detalles.rsyncno creará directorios automáticamente si las carpetas de destino no existen. Suspiro.--relative. Puede que no haga lo que piensas.--relativeen conjunto con/./es lo que la mayoría de los novatos estarán buscando.rsync -avz -e ssh --progress --relative ~/./Desktop/ TARGET_IP:~/copiará el contenido del escritorio al escritorio de destino. No sé cómo las diferencias en los nombres de usuario pueden afectar esto.esto funcionó para mí:
Recibo este mensaje:
pero no tengo que preocuparme por tener un directorio vacío dando vueltas.
fuente
No creo que pueda hacerlo con un comando rsync, pero puede 'crear previamente' el directorio adicional primero de esta manera:
donde 'emptydir' es un directorio vacío local (que es posible que primero deba crear como directorio temporal).
Es un truco, pero funciona para mí.
salud
Chris
fuente
rsync /dev/null node:existing-dir/new-dir/sugerencia arriba.Esta respuesta utiliza fragmentos de otras respuestas, pero espero que sea un poco más claro en cuanto a las circunstancias. Nunca especificó lo que estaba sincronizando: una sola entrada de directorio o varios archivos.
Así que supongamos que está moviendo una entrada de directorio de origen, y no solo moviendo los archivos contenidos en ella.
Digamos que tiene un directorio llamado localmente
data/myappdata/y tiene una carga de subdirectorios debajo de esto. Tienedata/en su máquina de destino pero nodata/myappdata/, esto es bastante fácil:Incluso puede usar un nombre diferente para el directorio remoto:
Si solo está moviendo algunos archivos y no está moviendo la entrada del directorio que los contiene, entonces haría:
y creará el
myappdatadirectorio para usted en la máquina remota para colocar sus archivos. Nuevamente, eldata/directorio debe existir en la máquina remota.Por cierto, mi uso de
-rvvflag es obtener resultados doblemente detallados para que quede claro lo que hace, así como el comportamiento recursivo necesario.Solo para mostrarle lo que obtengo cuando uso rsync (3.0.9 en Ubuntu 12.04)
Espero que esto aclare esto un poco.
fuente
rsync -rvv /path/to/data/myappdata user@host:/remote/path/to/data/myappdatapero lo que creó en el destino es / remote / path / to / data / myappdata / myappdata /rsync -rvv /path/to/data/myappdata/ user@host:/remote/path/to/data/myappdatap.ej:
de: /xxx/a/b/c/d/e/1.html
a: usuario @ remoto: /pre_existing/dir/b/c/d/e/1.html
rsync:
cd / xxx / a / && rsync -auvR b / c / d / e / user @ remote: / pre_existing / dir /
fuente