rsync y enlaces simbólicos

rsync y enlaces simbólicos

Quiero hacer una copia de seguridad de mi directorio personal en una unidad externa todas las noches usando un crontrabajo para ejecutar rsync. No estoy seguro del comportamiento exacto de rsynclos indicadores de enlaces simbólicos.

  1. rsyncLa bandera de -aincluye la -lbandera (es decir, "copiar enlaces simbólicos como enlaces simbólicos"). ¿Esto sólo significa que serácopia el enlace¿O que seguirá el enlace y copiará todo en el directorio de enlace? Quiero evitar eso porque tengo enlaces a directorios llenos de archivos multimedia que implicarían copiar cientos de gigabytes de los que no necesito hacer una copia de seguridad.
  2. Temiendo (pero no seguro) que rsync -ase copiaran todos esos archivos multimedia, agregué la --no-linksbandera. Este no parece ser el comportamiento que quiero. Simplemente ignora copiar cualquier enlace, lo cual es problemático porque tengo enlaces que quiero copiar (por ejemplo, enlaces a archivos de encabezado comunes de diferentes directorios de proyectos).
  3. Suponiendo que el punto 1 anterior (sin la --no-linksbandera) es lo que realmente quiero y simplemente copia el enlace sin copiar los archivos vinculados, ¿se romperán los enlaces cuando se haga una copia de seguridad de ellos? Por ejemplo, puedo rsyncbuscar el directorio /home/me/projects/miscen /media/extdrive/backup/home/me/projects/misc. En este caso, supongo que rsyncno es lo suficientemente inteligente ni intenta corregir el contenido de los enlaces simbólicos para los cambios relativos del directorio. ¿Es esto correcto? Esto está bien, no importa si los enlaces están rotos en los directorios de respaldo, siempre y cuando estén reparados y funcionando si llega el momento en que sea necesario restaurarlos.

Respuesta1

  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 destino.Nada mas.

    (Unas pocas líneas más abajo en la página del manual, undiferenteLa opción, --copy-linksdescribe el comportamiento opuesto (siempre copiar los datos) que usted describió como indeseable).

    Véase también la sección "Enlaces simbólicos":

    Si --linksse especifica, los enlaces simbólicos se recrean con el mismo destino en el destino.

  2. No es el comportamiento que desea porque está malinterpretando lo --linksque desea y, por lo tanto, solicita el comportamiento incorrecto (consulte la respuesta n.° 1).

  3. Por defecto copia el destinoexactamente.

    Es decir, si el enlace apuntaba a una ruta absoluta (por ejemplo /home/me/projects), seguirá apuntando a la misma ruta; no lo haráromper, simplemente continuará apuntando a un archivo en su directorio de inicio en lugar del que está en su copia de seguridad.

    Mientras tanto, si el enlace apunta a una ruta relativa (por ejemplo ../../projects),tambiéncontinúe apuntando a la misma ruta, pero dado que es relativo a la ubicación del enlace simbólico, el enlace simbólico en su copia de seguridad también apuntará a un archivo en su copia de seguridad.

    Desafortunadamente, no parece haber ninguna opción para traducir enlaces simbólicos absolutos para su nueva base (solo una opción para romperlos por completo). Para evitar problemas, debe cambiar los enlaces simbólicos existentes por unos relativos (lo cual es una buena idea en general, para enlaces dentro de $HOME).

Respuesta2

@grawity tiene una excelente respuesta, pero aquí hay una captura de pantalla de información relevante dela documentación. Aquí está la redacción exacta de -l(letra L minúscula, no uno) y -Llas opciones, por ejemplo, que parecen ser las más relevantes en cuestión:

ingrese la descripción de la imagen aquí

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

Tenga en cuenta también que la opción -a( --archive) también incluye la -lopción dentro de ella, lo cual es fantástico, ya que realmente me gusta usar la -lopción para conservar mis enlaces simbólicos del origen como enlaces simbólicos en el destino. De las páginas del manual ( man rsync):

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

Y aquí están los significados de -rlptgoD, también de man rsync:

   --recursive, -r          recurse into directories
   --links, -l              copy symlinks as symlinks
   --perms, -p              preserve permissions
   --times, -t              preserve modification times
   --group, -g              preserve group
   --owner, -o              preserve owner (super-user only)
   -D                       same as --devices --specials
   --devices                preserve device files (super-user only)
   --specials               preserve special files ["such as named sockets and fifos"]

¡Importante!:

Si se usa rsyncenexFAToGORDOsistemas de archivos, sin embargo, lo hacennono admite enlaces simbólicos ni propietarios, grupos ni permisos POSIX, por lo queeliminar -lpgoy utilizar -rtDen lugar de -a!También puede agregar -v"detallado" si lo desea y usar-vrtD.

Ver más aquí:

  1. [mi respuesta]Las mejores configuraciones para usar rsync con sistemas de archivos FAT y exFAT
  2. rsync parece sobrescribir un archivo ya existente en ExFat
  3. https://superuser.com/a/384849/425838
  4. https://learn.microsoft.com/en-us/windows/win32/fileio/filesystem-functionality-comparison

rsyncTenga en cuenta que mis comandos e instrucciones favoritos , que incluyen copiar, reflejar, mostrar el progreso total...

...haciendo simulacros, registrando stderr y stdout en archivos (separados), mostrando estadísticas, usando unincluir archivo de rutay unexcluir archivo, etc., vea mi respuesta completa aquí en la segunda sección, titulada "2. Herramienta de línea de comandos rsync (Linux, Windows con Cygwin)":https://superuser.com/a/1464264/425838

información relacionada