Скопировать символическую ссылку И где она указывает на использование 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 ? Спасибо.

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

  • Почему я не могу копировать символические ссылки?
  • Создание символических ссылок на приложения в Mac OS X
  • Git отслеживания dotfiles, которые символически связаны
  • Создание символических ссылок
  • Есть ли все равно, чтобы автоматически монтировать файловую систему, когда я открываю символическую ссылку на каталог в этой файловой системе?
  • Как создать ссылки на файловую систему vfat на смонтированном диске под Linux?
  • ссылка на исполняемый файл и удаление некоторых параметров
  • Wikilink к символической ссылке в ikiwiki
  • 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 передает содержимое каталога.

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