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

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

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

  • Почему я получаю ошибку при загрузке разделяемых библиотек: libssl.so.6 не может открыть файл общих объектов даже после запуска ldconfig?
  • Безопасно ли создавать символические ссылки в / root для файлов конфигурации в домашнем каталоге пользователей aa?
  • ls -l vs ls -lL
  • Режим архивирования rsync
  • rsync добавляет дополнительный каталог в команду
  • Как скопировать символические ссылки как символические ссылки с одной машины на другую?
  • Вот пример. Скажем, у нас есть эта иерархия папок:

     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 всех каталогов внутри одного каталога в другой каталог
  • Как проверить прогресс cp, когда цель - целое устройство
  • Зачем мне использовать зеркало rsync?
  • Игнорировать Symlinks при извлечении Tarball
  • 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 - лучшая ОС в мире.