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

символические ссылки

Я хочу создать резервную копию домашнего каталога на внешний диск ночью, используя задание cron для выполнения rsync. Я не уверен в точном поведении символических флагов ссылок rsync. Флаг

  1. Флаг rsync -a включает в себя флаг -l (т.е. “копировать сим-ссылки как сим-ссылки”). Означает ли это, что она будет copy the link или что она будет следовать по ссылке и скопирует все в каталог ссылок? Я хочу избежать этого, потому что у меня есть ссылки на каталоги, полные медиа-файлов, которые подразумевают копирование сотен гигабайт, резервное копирование которых мне не нужно.
  2. Опасаясь (но не будучи уверенным), что rsync -a скопирует все те медиафайлы, я вместо этого добавил флаг --no-links. Это не похоже на поведение, которого я хочу. Оно просто игнорирует копирование любой ссылки, что проблематично, потому что у меня есть ссылки, которые я хочу скопировать (например, ссылки на общие заголовочные файлы из разных каталогов проекта).
  3. Предположим, что #1 выше (без флага --no-links) - это то, чего я действительно хочу, и он просто копирует ссылку без копирования ссылок на файлы, разобьются ли ссылки, когда они будут скопированы в резервную копию? Например, я могу использовать исходный каталог rsync в /home/me/projects/misc. В этом случае я предполагаю, что /media/extdrive/backup/home/me/projects/misc не достаточно умён и не пытается исправить содержимое сим-ссылок для изменения относительной директории. Правильно ли это? Это нормально, не имеет значения, если ссылки в резервных каталогах будут разбиты, если они будут исправлены и будут работать, если настанет время, когда их нужно будет восстанавливать.

Ответы (2)

98
98
98
2014-08-18 05:26:17 +0000
  1. “Copy symlinks as symlinks” означает именно то, что в нем сказано: если rsync увидит симлинк в исходном каталоге, она создаст идентичную симлинк в целевом каталоге. Ничего больше.

  2. Это не то поведение, которое вам нужно, потому что вы неправильно интерпретируете то, что делает --links и, следовательно, просите о неправильном поведении (см. ответ #1).

  3. По умолчанию, он копирует назначение точно..

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

@grawity имеет отличный ответ, но вот скриншот некоторой релевантной информации из документации. Вот, например, точная формулировка опций -l и -L, которые кажутся наиболее релевантными:

Источник: https://linux.die.net/man/1/rsync , или страницы руководства man rsync по Linux.

Обратите внимание, что опция -a (--archive) также включает в себя опцию -l, что очень здорово, поскольку мне очень нравится использовать опцию -l для сохранения моих сим-ссылок из исходного кода в качестве сим-ссылок по назначению. Из man-страниц:

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

Обратите внимание, для моих любимых команд и инструкций rsync, в том числе копирование, зеркалирование, отображение общего прогресса…

…делая сухие прогоны, записывая stderr и stdout в (отдельные) файлы, показывая статистику, используя include path file и exclude file, и т.д., смотрите мой полный ответ здесь, во 2-м разделе под заголовком “2. rsync Command-line tool (Linux, Windows с Cygwin)”: https://superuser.com/a/1464264/425838

Похожие вопросы

6
10
5
37
5