Как заставить rsync копировать реальные данные вместо символьных ссылок? [дубликат]

Вопрос или проблема

В исходном каталоге у меня есть несколько символических ссылок. Эти ссылки указывают на некоторые пути, и данные также присутствуют по этим путям; но используя rsync, он копирует только файлы ссылок, а не данные, которые находятся по этому пути.

lrwxrwxrwx 1 lafter lafter   58 Sep 26 16:57 8770 -> ../../../../.sites_repository/brest/8770/3.2.08.05.b-b0001
lrwxrwxrwx 1 lafter lafter   59 Sep 26 16:57 bootdvd -> ../../../../.sites_repository/colombes/bootdvd/12.1.013.000

Какие-нибудь решения?

man rsync говорит:

-L, --copy-links    преобразовать символическую ссылку в соответствующий файл/каталог

Ответ или решение

Если вы хотите использовать rsync для копирования фактических данных вместо символических ссылок, вы можете воспользоваться параметром -L или --copy-links. Этот параметр позволяет rsync преобразовывать символические ссылки (symlinks) в соответствующие им файлы или каталоги. В этом ответе мы обсудим, как это сделать на практике, и приведем пример использования.

Пример использования rsync с параметром -L

Предположим, у вас есть каталог /source, содержащий несколько символических ссылок, которые ссылаются на различные файлы и каталоги, и вы хотите скопировать их содержимое в каталог /destination. В этом случае вам следует использовать следующую команду:

rsync -avL /source/ /destination/

Параметры команды:

  • -a: архивный режим, который включает в себя множество опций, таких как рекурсивное копирование и сохранение прав доступа.
  • -v: включить подробный вывод для отслеживания процесса копирования.
  • -L: копирует данные, на которые ссылаются символические ссылки, вместо самих ссылок.

Как работает -L:

Когда вы используете -L, rsync проходит по всем файлам и каталогам в исходном каталоге и заменяет каждую символическую ссылку её реальным содержимым. Это позволяет избежать проблем с отсутствующими файлами или недоступными каталогами, на которые ссылаются ссылки, поскольку будет скопировано именно то, к чему они указывают.

Важно помнить:

  1. Наличие данных: Убедитесь, что файлы, на которые ссылаются символические ссылки, действительно существуют. Если ссылки ведут на недоступные пути, вы можете столкнуться с ошибками или неполными копиями.

  2. Права доступа: При использовании -a rsync попытается сохранить права доступа к файлам и каталогам, что может потребовать соответствующих прав пользователя.

  3. Символические ссылки: Если вы сознательно хотите скопировать и саму символическую ссылку, вам следует использовать опцию -l (или --links), которая сохраняет ссылки как есть.

Заключение

Использование параметра -L в rsync является простым и эффективным способом копирования фактических данных вместо символических ссылок. Это особенно полезно в ситуациях, когда необходимо синхронизировать содержимое каталогов и избежать потери данных из-за неразрешённых ссылок. Убедитесь, что перед выполнением команды у вас есть необходимые права доступа и что все данные доступны по указанным путям.

Оцените материал
Добавить комментарий

Капча загружается...