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

rsync i dowiązania symboliczne

Chcę wykonać nocną kopię zapasową mojego katalogu domowego na dysku zewnętrznym, używając zadania cron do wykonania rsync. Nie jestem pewien, jak dokładnie zachowują się flagi dowiązań symbolicznych rsync.

  1. Flaga rsync w -a zawiera flagę -l (tj. “kopiuj dowiązania symboliczne jako dowiązania symboliczne”). Czy to oznacza tylko, że będzie kopiować link lub że będzie podążać za linkiem i kopiować wszystko w katalogu link-to? Chcę tego uniknąć, ponieważ mam linki do katalogów pełnych plików multimedialnych, które wymagałyby skopiowania setek gigabajtów, których nie potrzebuję do tworzenia kopii zapasowych.
  2. Obawiając się (ale nie będąc pewnym), że rsync -a skopiowałoby wszystkie te pliki multimedialne, zamiast tego dodałem flagę --no-links. Nie wygląda to na zachowanie, którego chcę. To po prostu ignoruje kopiowanie dowolnego linku, co jest problematyczne, ponieważ mam linki, które chcę skopiować (np. Linki do wspólnych plików nagłówkowych z różnych katalogów projektu).
  3. Zakładając, że #1 powyżej (bez flagi --no-links) jest tym, czego naprawdę chcę i po prostu kopiuje link bez kopiowania połączonych plików, czy linki się zepsują, gdy zostaną zarchiwizowane? Na przykład mogę rsync katalog źródłowy /home/me/projects/misc do /media/extdrive/backup/home/me/projects/misc. W tym przypadku zakładam, że rsync nie jest wystarczająco inteligentny, ani nie próbuje poprawić zawartości symlinków dla względnych zmian katalogów. Czy to jest poprawne? To jest w porządku, nie ma znaczenia, czy linki są uszkodzone w katalogach zapasowych, tak długo, jak będą one naprawione i działające, jeśli nadejdzie taki czas, kiedy trzeba będzie je przywrócić.

Odpowiedzi (2)

98
98
98
2014-08-18 05:26:17 +0000
  1. “Kopiuj symlinki jako symlinki” oznacza dokładnie to, co mówi: Jeśli rsync widzi symlink w katalogu źródłowym, utworzy identyczny symlink w docelowym. Nic więcej.

  2. To nie jest zachowanie, którego chcesz, ponieważ źle interpretujesz to, co robi --links i dlatego pytasz o niewłaściwe zachowanie (patrz odpowiedź #1).

  3. Domyślnie, kopiuje miejsce docelowe dokładnie..

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

@grawity ma świetną odpowiedź, ale tutaj jest zrzut ekranu niektórych istotnych informacji z dokumentacji. Oto dokładne sformułowanie opcji -l i -L, na przykład, które wydają się być najbardziej istotne w pytaniu:

Źródło: https://linux.die.net/man/1/rsync , czy man rsync strony podręcznika na Linuksie.

Zauważ również, że opcja -a (--archive) zawiera również opcję -l w sobie, co jest niesamowite, ponieważ naprawdę lubię używać opcji -l do zachowania moich symlinków ze źródła jako symlinków w miejscu docelowym. Ze stron man:

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

Uwaga, dla moich ulubionych poleceń i instrukcji rsync, w tym kopiowanie, mirroring, pokazywanie całkowitego postępu…

…robienie suchych przebiegów, logowanie stderr i stdout do (oddzielnych) plików, pokazywanie statystyk, używanie pliku include path i exclude, etc, zobacz moją pełną odpowiedź tutaj w 2 sekcji, zatytułowanej “2. rsync Command-line tool (Linux, Windows with Cygwin)”: https://superuser.com/a/1464264/425838