Estoy realizando una transferencia de datos, el antiguo sistema de archivos depende en gran medida de un directorio que ahora se encuentra en una ruta diferente. Este es un directorio git que almacena código en línea. No tengo derecho a moverlo o cambiarle el nombre.

Entonces, lo que puedo hacer es sincronizar este directorio con la misma ruta anterior. Pero el nombre del directorio también cambió.

¿Existe alguna forma sencilla de sincronizar un directorio con un directorio de destino con un nombre diferente?

Respuesta1

Si desea utilizar rsyncpara hacer que el destdirectorio sea una copia exacta del srcdirectorio de forma recursiva:

rsync -a src/ dest

La rsyncpágina de manual explica cómo funciona esto:

Una barra diagonal final en el origen [...] evita la creación de un nivel de directorio adicional en el destino. Puede pensar que un seguimiento /en una fuente significa "copiar el contenido de este directorio" en lugar de "copiar el directorio por nombre" [...]

Respuesta2

Respuesta3

Si su máquina puede acceder al sistema de archivos antiguo y nuevo, considere usar un enlace simbólico en lugar de rsync. Si el comando rsync que está utilizando no especifica hosts (o si son el mismo host), entonces este es el caso. Estás intentando reflejar dos directorios con un nombre diferente en el mismo host. No utilice rsync para esto, ya que está duplicando los datos y tendrá que ejecutar rsync con frecuencia 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 alias que apunta a otro directorio.

Digamos que tenía el antiguo 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:

cd /old/path
rm -rf old_git     (if you still have it there, get rid of it, or move it out of the way)  
ln -s /new/path/new_git old_git

Esto creará un enlace como tal:

/antiguo/ruta/antiguo_git -> /nuevo/ruta/nuevo_git

De modo que todo lo que se coloque en new_git también estará disponible instantáneamente a la antigua usanza, sin duplicar datos y sin tener que sincronizarlos constantemente.

Respuesta4

Encuentro una solución alternativa ahora.

El uso rysnc -r /origin/* /target/puede sincronizar todos los contenidos desde el directorio de origen al directorio de destino.

información relacionada