Я хочу сделать резервную копию моего домашнего каталога на внешний диск каждую ночь, используя cron
задание для выполнения rsync
. Я не уверен в точном поведении rsync
флагов символических ссылок России.
rsync
's-a
флаг включает в себя-l
флаг (то есть "копировать символические ссылки как символические ссылки"). Означает ли это, что он просто скопирует ссылку или будет следовать по ссылке и скопировать все в каталоге ссылки? Я хочу избежать этого, потому что у меня есть ссылки на каталоги, заполненные мультимедийными файлами, которые включают копирование сотен гигабайт, резервное копирование которых мне не нужно.- Опасаясь (но не уверен), что
rsync -a
будут копироваться все эти медиа-файлы, я вместо этого добавил--no-links
флаг. Это не похоже на поведение, которое я хочу. Он просто игнорирует копирование любой ссылки, что проблематично, потому что у меня есть ссылки, которые я хочу скопировать (например, ссылки на общие заголовочные файлы из разных каталогов проекта). - Если предположить,
--no-links
что я действительно хочу № 1 (без флага), это то, что я действительно хочу, и он просто копирует ссылку, не копируя файлы, на которые ведут ссылки, будут ли ссылки разрываться при резервном копировании? Например , я , возможно ,rsync
источник каталога/home/me/projects/misc
в/media/extdrive/backup/home/me/projects/misc
. В этом случае я полагаю, чтоrsync
он недостаточно умен и не пытается исправить содержимое символических ссылок для относительных изменений каталога. Это верно? Это нормально, это не имеет значения, если ссылки в каталогах резервных копий будут повреждены, если они будут исправлены и работают, если наступит такое время, когда их нужно будет восстановить.
linux
rsync
symbolic-link
Sean
источник
источник
Ответы:
«Копировать символические ссылки как символические ссылки» означает именно то, что говорится: если rsync увидит символическую ссылку в исходном каталоге, он создаст идентичную символическую ссылку в месте назначения. Ничего больше.
(Несколько строк на странице справочника, другая опция,
--copy-links
описывает противоположное поведение (всегда копирование данных), которое вы назвали нежелательным.)Смотрите также раздел «Символические ссылки»:
Это не то поведение, которое вам нужно, потому что вы неправильно истолковываете то, что
--links
делает, и поэтому просите о неправильном поведении (см. Ответ № 1).По умолчанию он точно копирует место назначения .
То есть, если ссылка указывает на абсолютный путь (например
/home/me/projects
), она будет продолжать указывать на тот же путь; он не сломается , он просто продолжит указывать на файл в вашем домашнем каталоге, а не на тот, который находится в вашей резервной копии.Между тем, если ссылка указывает на относительный путь (например
../../projects
), она также будет продолжать указывать на тот же путь, но, поскольку она связана с расположением символической ссылки, символическая ссылка в вашей резервной копии также будет указывать на файл в вашей резервной копии.К сожалению, кажется, нет никакой возможности перевести абсолютные символические ссылки для их новой базы (только возможность полностью их разорвать). Чтобы избежать проблем, вы должны изменить существующие символические ссылки на относительные (что обычно является хорошей идеей для ссылок внутри $ HOME).
источник
--copy-links
а--links
?--copy-links
=-L
и--links
=-l
. См. Описание из документации в моем ответе здесь: superuser.com/a/1388910/425838У @grawity отличный ответ, но вот скриншот с некоторой соответствующей информацией из документации. Вот точная формулировка
-l
и-L
вариант, например, которые кажутся наиболее значимыми из них идет речь:Источник: https://linux.die.net/man/1/rsync или
man rsync
справочные страницы по Linux.Также обратите внимание, что опция
-a
(--archive
) также включает в себя эту-l
опцию, которая является удивительной, поскольку мне действительно нравится использовать эту-l
опцию, чтобы сохранить мои символические ссылки из источника в качестве символических ссылок на месте назначения. Из справочных страниц:Обратите внимание, для моих любимых
rsync
команд и инструкций, включая копирование, зеркалирование, отображение общего прогресса ...... делать холостые прогоны, протоколирование потоки вывода в (отдельные) файлы, показывая статистику, используя заголовочный файл путь и исключить файл , и т.д., см моего полный ответа здесь под 2 - ем секции, под названием " 2. Rsync командной строки инструмент (Linux, Windows с Cygwin) ": https://superuser.com/a/1464264/425838
источник