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

rsync en symbolische koppelingen

Ik wil een nachtelijke backup maken van mijn homedirectory naar een externe schijf met een cron opdracht om rsync uit te voeren. Ik ben niet zeker van het exacte gedrag van de symbolische link vlaggen van rsync.

  1. De rsync vlag van -a bevat de -l vlag (d.w.z. “kopieer symlinks als symlinks”). Betekent dit dat hij alleen de link kopieert of dat hij de link volgt en alles in de link-naar directory kopieert? Ik wil dat vermijden omdat ik links heb naar mappen vol met mediabestanden waarbij ik honderden gigabytes zou moeten kopiëren die ik niet hoef te back-uppen.
  2. Uit vrees (maar niet zeker) dat rsync -a al die mediabestanden zou kopiëren heb ik in plaats daarvan de --no-links vlag toegevoegd. Dit lijkt niet het gedrag te zijn dat ik wil. Het negeert gewoon het kopiëren van elke link, wat problematisch is omdat ik wel links heb die ik gekopieerd wil hebben (b.v. links naar gemeenschappelijke header bestanden uit verschillende project directories).
  3. Aangenomen dat #1 hierboven (zonder de --no-links vlag) is wat ik echt wil en het kopieert alleen de link zonder de gelinkte bestanden te kopiëren, zullen de links dan breken wanneer ze geback-upt worden? Ik kan bijvoorbeeld rsync bronmap /home/me/projects/misc naar /media/extdrive/backup/home/me/projects/misc kopiëren. In dit geval neem ik aan dat rsync niet slim genoeg is en ook niet probeert om de inhoud van symlinks te corrigeren voor de relatieve directory veranderingen. Is dit correct? Dit is in orde, het maakt niet uit of de links in de backup directories gebroken zijn, zolang ze maar gerepareerd zijn en werken als er een tijd komt dat ze hersteld moeten worden.

Antwoorden (2)

98
98
98
2014-08-18 05:26:17 +0000
  1. “Kopieer symlinks als symlinks” betekent precies wat het zegt: Als rsync een symlink ziet in de bron map, zal het een identieke symlink maken in de bestemming. Niets meer.

  2. Het is niet het gedrag dat je wilt omdat je verkeerd interpreteert wat --links doet en daarom vraagt om het verkeerde gedrag (zie antwoord # 1).

  3. Standaard kopieert het de bestemming exact.

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

@grawity heeft een geweldig antwoord, maar hier is een screenshot van wat relevante info uit de documentatie. Hier is bijvoorbeeld de exacte formulering van de -l en -L opties, die de meest relevante in kwestie lijken te zijn:

Bron: https://linux.die.net/man/1/rsync , of man rsync manual pages op Linux.

Merk ook op dat de -a (--archive) optie ook de -l optie in zich heeft, wat geweldig is, aangezien ik echt graag de -l optie gebruik om mijn symlinks van de bron als symlinks op de bestemming te behouden. Van de man pages:

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

Let op, voor mijn favoriete rsync commando’s en instructies, inclusief kopiëren, spiegelen, totale voortgang tonen…

…dry runs doen, stderr en stdout naar (aparte) bestanden loggen, statistieken tonen, een include path file en een exclude file gebruiken, etc, zie mijn volledige antwoord hier onder de 2e sectie, getiteld “2. rsync Command-line tool (Linux, Windows met Cygwin)”: https://superuser.com/a/1464264/425838