Скопировать символическую ссылку И где она указывает на использование rsync

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

rsync -a (или -l ) может сохранять символические ссылки, а -L может разыменовывать символические ссылки и копировать их, как если бы это обычный файл / dir. Однако можно ли сохранить символическую ссылку, а также скопировать файлы / каталоги, на которые указывает ссылка?

Вот пример. Скажем, у нас есть эта иерархия папок:

 dirA/link_to_file -> ../dirB/file dirA/link_to_dir -> ../dirC dirB/file dirB/not_this_file dirC/file dirC/file2 dirD/others 

и когда я делаю rsync -aR dirA dest (или что-то еще), я хотел бы, чтобы именно они появлялись в dest :

 dirA/link_to_file -> ../dirB/file dirA/link_to_dir -> ../dirC dirB/file dirC/file dirC/file2 

Возможно ли это с помощью rsync ? Спасибо.

Предположим, что символические ссылки, имеющие абсолютный путь или указывающие на внешнюю директорию источника, могут быть проигнорированы.

  • Symlink с символом @?
  • Трейлинг слэш на символических ссылках на каталоги
  • Создание символических ссылок с подстановочными знаками
  • Создание символических ссылок в каталоге etc без доступа root
  • Как эта символьная связь не следует следовать?
  • Создание локальной рабочей области для разработки / тестирования
  • Сделать Nginx следовать символическим ссылкам
  • Содержит ли мягкая привязка к каталогу жесткие ссылки на его подфайлы?
  • 2 Solutions collect form web for “Скопировать символическую ссылку И где она указывает на использование rsync”

    Это было бы возможно, если и только если вы все были в «mydir», и вы должны были rsync «mydir» из одного места в другое. Rsync не способен копировать вне пути, который вы ему даете (за исключением следующих ссылок). например

     mydir/dirA ... mydir/dirB ... ... 

    Если вы знаете имя символической ссылки и хотите перенести ссылку и цель, вы можете:

     rsync -a 'symlink' . realdir="$(basename "$(readlink -f 'symlink')")" rsync -a "$realdir" . 

    Первый rsync передает только symlink . Вторая команда находит реальное имя каталога, а вторая rsync передает содержимое каталога.

    Linux и Unix - лучшая ОС в мире.