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

rsync e collegamenti simbolici

Voglio fare il backup notturno della mia home directory su un'unità esterna usando un lavoro per eseguire cron. Non sono sicuro dell'esatto comportamento dei flag dei link simbolici di rsync.

  1. Il flag rsync di rsync include il flag -a (cioè “copy symlinks as symlinks”). Questo significa solo che copierà il link o che seguirà il link e copierà tutto nella directory link-to? Voglio evitarlo perché ho collegamenti a directory piene di file multimediali che comporterebbero la copia di centinaia di gigabyte di cui non ho bisogno di fare il backup.
  2. Temendo (ma non certo) che -l copierebbe tutti quei file multimediali ho invece aggiunto il flag rsync -a. Questo non sembra essere il comportamento che voglio. Ignora semplicemente di copiare qualsiasi link, il che è problematico perché ho dei link che voglio copiare (per esempio link a file header comuni da diverse directory del progetto).
  3. Supponendo che #1 sopra (senza il flag --no-links) sia ciò che voglio veramente e che copi semplicemente il link senza copiare i file collegati, i link si romperanno quando verranno copiati? Per esempio posso --no-links directory sorgente rsync a /home/me/projects/misc. In questo caso presumo che /media/extdrive/backup/home/me/projects/misc non sia abbastanza intelligente e che non cerchi di correggere il contenuto dei link simbolici per i relativi cambiamenti di directory. È corretto? Questo va bene, non importa se i collegamenti sono rotti nelle directory di backup, purché siano corretti e funzionanti se arriva il momento in cui devono essere ripristinati.

答案 (2)

98
98
98
2014-08-18 05:26:17 +0000
  1. “Copiare i link simbolici come link simbolici” significa esattamente ciò che dice: se rsync vede un link simbolico nella directory sorgente, creerà un link simbolico identico nella destinazione. Niente di più.

  2. Non è il comportamento che vuoi perché stai interpretando male ciò che fa --links e quindi chiedendo il comportamento sbagliato (vedi risposta #1).

  3. Per default, copia la destinazione esattamente.

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

@grawity ha una grande risposta, ma ecco uno screenshot di alcune informazioni rilevanti dalla documentazione. Ecco il testo esatto delle opzioni -l e -L, per esempio, che sembrano essere le più rilevanti in questione:

Fonte: https://linux.die.net/man/1/rsync , o man rsync pagine di manuale su Linux.

Si noti inoltre che l'opzione -a (--archive) include anche l'opzione -l al suo interno, il che è fantastico, dato che mi piace molto usare l'opzione -l per conservare i miei collegamenti simbolici dal sorgente come collegamenti simbolici sulla destinazione. Dalle pagine man:

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

Nota, per i miei comandi e istruzioni preferiti rsync, incluso copiare, fare il mirroring, mostrare il progresso totale…

…fare corse a vuoto, registrare stderr e stdout su file (separati), mostrare le statistiche, usare un include path file e un exclude file, ecc, vedi la mia risposta completa qui nella 2a sezione, intitolata “2. rsync Command-line tool (Linux, Windows con Cygwin)”: https://superuser.com/a/1464264/425838