2014-08-18 04:35:50 +0000 2014-08-18 04:35:50 +0000
77
77

rsync y los enlaces simbólicos

Quiero hacer una copia de seguridad de mi directorio personal en una unidad externa cada noche utilizando un trabajo cron para ejecutar rsync. No estoy seguro del comportamiento exacto de las banderas de enlace simbólico de rsync.

  1. La bandera rsync de -a incluye la bandera -l (es decir, “copiar enlaces simbólicos como enlaces simbólicos”). ¿Significa esto que copiará el enlace o que seguirá el enlace y copiará todo en el directorio del enlace? Quiero evitar eso porque tengo enlaces a directorios llenos de archivos multimedia que implicarían copiar cientos de gigabytes que no necesito respaldar.
  2. Temiendo (pero sin estar seguro) que rsync -a copiara todos esos archivos multimedia, añadí en su lugar la bandera --no-links. Este no parece ser el comportamiento que quiero. Simplemente ignora la copia de cualquier enlace, lo cual es problemático porque tengo enlaces que quiero copiar (por ejemplo, enlaces a archivos de cabecera comunes de diferentes directorios del proyecto).
  3. Suponiendo que el número 1 de arriba (sin la bandera --no-links) es lo que realmente quiero y sólo copia el enlace sin copiar los archivos enlazados, ¿se romperán los enlaces cuando se haga la copia de seguridad? Por ejemplo, yo puedo rsync directorio de origen /home/me/projects/misc a /media/extdrive/backup/home/me/projects/misc. En este caso asumo que rsync no es lo suficientemente inteligente ni intenta corregir el contenido de los enlaces simbólicos para los cambios de directorio relativos. ¿Es esto correcto? Esto está bien, no importa si los enlaces están rotos en los directorios de la copia de seguridad, siempre y cuando se arreglen y funcionen si llega el momento en que necesitan ser restaurados.

Respuestas (2)

98
98
98
2014-08-18 05:26:17 +0000
  1. “Copiar enlaces simbólicos como enlaces simbólicos” significa exactamente lo que dice: Si rsync ve un enlace simbólico en el directorio de origen, creará un enlace simbólico idéntico en el de destino. **

  2. No es el comportamiento que quieres porque estás malinterpretando lo que hace --links y, por tanto, pidiendo un comportamiento erróneo (ver respuesta #1).

  3. Por defecto, copia el destino exactamente.

19
19
19
2018-12-30 07:47:50 +0000

@grawity tiene una gran respuesta, pero aquí hay una captura de pantalla de alguna información relevante de la documentación. Aquí está la redacción exacta de las opciones -l y -L, por ejemplo, que parecen ser las más relevantes en cuestión:

Fuente: https://linux.die.net/man/1/rsync , o man rsync páginas de manual en Linux.

Observe también que la opción -a (--archive) también incluye la opción -l dentro de ella, lo cual es impresionante, ya que me gusta mucho usar la opción -l para preservar mis enlaces simbólicos desde el origen como enlaces simbólicos en el destino. De las páginas de manual:

-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)

Nota, para mis comandos e instrucciones favoritas de rsync, incluyendo copiar, reflejar, mostrar el progreso total…

…hacer ejecuciones en seco, registrar stderr y stdout en archivos (separados), mostrar estadísticas, usar un archivo de ruta include y un archivo exclude, etc, vea mi respuesta completa aquí en la 2da sección, titulada “2. Herramienta de línea de comandos rsync (Linux, Windows con Cygwin)”: https://superuser.com/a/1464264/425838