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

rsync et liens symboliques

Je veux sauvegarder mon répertoire personnel sur un disque externe tous les soirs en utilisant un job cron pour exécuter rsync. Je ne suis pas sûr du comportement exact des drapeaux de lien symbolique de rsync.

  1. Le drapeau rsync de -a inclut le drapeau -l (c'est-à-dire “copier les liens symboliques en tant que liens symboliques”). Cela signifie-t-il simplement qu'il va copier le lien ou qu'il va suivre le lien et copier tout ce qui se trouve dans le répertoire des liens ? Je veux éviter cela car j'ai des liens vers des répertoires remplis de fichiers multimédia qui impliqueraient la copie de centaines de gigaoctets que je n'ai pas besoin de sauvegarder.
  2. De peur (mais pas certain) que rsync -a ne copie tous ces fichiers média, j'ai ajouté le drapeau --no-links à la place. Cela ne semble pas être le comportement que je souhaite. Il ignore simplement la copie de tout lien qui est problématique parce que j'ai des liens que je veux copier (par exemple, des liens vers des fichiers d'en-tête communs provenant de différents répertoires de projet).
  3. En supposant que le point 1 ci-dessus (sans le drapeau --no-links) est ce que je veux vraiment et qu'il se contente de copier le lien sans copier les fichiers liés, les liens vont-ils se rompre lorsqu'ils sont sauvegardés ? Par exemple, je peux rsync répertoire source /home/me/projects/misc à /media/extdrive/backup/home/me/projects/misc. Dans ce cas, je suppose que rsync n'est pas assez intelligent et qu'il n'essaie pas de corriger le contenu des liens symboliques pour les changements de répertoire relatifs. Est-ce correct ? Ce n'est pas grave, peu importe si les liens sont rompus dans les répertoires de sauvegarde tant qu'ils seraient réparés et qu'ils fonctionnent si le moment est venu de les restaurer.

Réponses (2)

98
98
98
2014-08-18 05:26:17 +0000
  1. “Copier les liens symboliques sous forme de liens symboliques” signifie exactement ce qu'il dit : si rsync voit un lien symbolique dans le répertoire source, il créera un lien symbolique identique dans le répertoire de destination. **Rien de plus,

  2. Ce n'est pas le comportement que vous voulez parce que vous interprétez mal ce que fait --links et que vous demandez donc le mauvais comportement (voir réponse n°1).

  3. Par défaut, il copie la destination exactement.

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

@grawity a une excellente réponse, mais voici une capture d'écran de quelques informations pertinentes tirées de la documentation. Voici la formulation exacte des options -l et -L, par exemple, qui semblent être les plus pertinentes en question :

Source : https://linux.die.net/man/1/rsync , ou man rsync pages de manuel sur Linux.

Notez également que l'option -a (--archive) inclut également l'option -l en son sein, ce qui est génial, puisque j'aime vraiment utiliser l'option -l pour préserver mes liens symboliques de la source comme liens symboliques sur la destination. A partir des pages de man :

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

Note, pour mes commandes et instructions rsync préférées, incluant la copie, la mise en miroir, l'affichage de la progression totale…

…faire des essais, enregistrer stderr et stdout dans des fichiers (séparés), afficher des statistiques, utiliser un fichier include path et un fichier exclude, etc, voir ma réponse complète ici dans la 2ème section, intitulée “2. rsync Command-line tool (Linux, Windows avec Cygwin)” : https://superuser.com/a/1464264/425838