Estoy haciendo una transferencia de datos, el antiguo sistema de archivos se basa profundamente en un directorio que ahora está en una ruta diferente. Este es un directorio git que almacena el código en línea. No tengo derechos para moverlo o cambiarle el nombre.
Entonces, lo que puedo hacer es rsync este directorio a la misma ruta anterior. Pero el nombre del directorio también cambió.
¿Hay alguna manera fácil de sincronizar un directorio a un directorio de destino con un nombre diferente?
src
directorio bajodest
directoriorsync
que haya usado. Si eso realmente te está sucediendo, te estás perdiendo la barra inclinada final al final del argumento del directorio de origen.dest
es un symlnksrc
, sino que termina copiandosrc
ensrc/src
. Probado en macOS. Tenía la esperanza de que podía reemplazarbar -> foo/
conbar/
, pero tenía que utilizar un directorio temporal intermedio.dest
es un enlace simbólicosrc
, simplementerm dest
antes de ejecutar el comando anterior.rsync
es lo suficientemente inteligente como para creardest
antes de copiar el contenido desrc
. No necesita un directorio temporal intermedio.Si el sistema de archivos antiguo y el nuevo son accesibles para su máquina, considere usar un enlace simbólico en lugar de rsync. Si su comando rsync que está utilizando no especifica hosts (o si son el mismo host), entonces este es el caso. Está intentando duplicar dos directorios con un nombre diferente en el mismo host. No use rsync para esto, ya que está duplicando los datos y tendrá que ejecutar su rsync a menudo para mantenerlos sincronizados.
El uso de un enlace simbólico es una solución única que reflejará dos directorios (con nombres diferentes) y casi no requiere espacio. Es como crear un directorio de alias que apunta a otro directorio.
Digamos que tenía el viejo git en un directorio llamado / old / path / old_git y ahora el repositorio de código se ha movido a / new / path / new_git
Tu puedes hacer:
Esto creará un enlace como tal:
/ old / path / old_git -> / new / path / new_git
De modo que cualquier cosa que se ponga en new_git estará disponible instantáneamente de la manera anterior también, sin duplicar datos y sin tener que sincronizarlos constantemente.
fuente
Encuentro una solución alternativa ahora.
El uso
rysnc -r /origin/* /target/
puede sincronizar todos los contenidos del directorio de origen al directorio de destino.fuente
rsync -r $(find /origin -maxdepth 1 -type f) /target/
. Como señaló @RayBurgemeestre, la expansión de glob shell no incluirá archivos de puntos.