Rsync: возможно ли передавать файлы src в виде символических ссылок и копировать остальную часть структуры dir

Я хочу скопировать директорию src в качестве шаблона, т. Е. Сохранить ту же структуру. Файлы в этом каталоге dir должны указывать на каталог src как символические ссылки. Я не уверен, что rsync может сделать это из коробки.

2 Solutions collect form web for “Rsync: возможно ли передавать файлы src в виде символических ссылок и копировать остальную часть структуры dir”

Rsync может выполнять только копии или (иногда) жесткие ссылки, а не символические ссылки. Программа cp от GNU coreutils может делать то, что вы хотите, по крайней мере, если вам не нужны модные параметры rsync, такие как фильтрация на основе имен файлов. Просто используйте флаг -s , плюс -a для рекурсии.

 cp -as source target 

Если вам нужна фильтрация, вы можете использовать zmv zsh . Функция zmv перемещает файлы по умолчанию, но вы можете указать другую операцию с -S (создать символические ссылки, но это не подходит для вашего использования, потому что оно не копирует каталоги) или -p (укажите произвольную программу, здесь я используйте функцию, которая создает все необходимые каталоги, а затем создает символическую ссылку). Вы можете указать шаблон, чтобы ограничить копирование файлов; здесь я использую ^*.dontcopy чтобы опустить файлы с расширением .dontcopy и (m-7) только для обработки файлов, измененных за последние 7 дней, плюс ^/ чтобы исключить каталоги из списка файлов для обработки.

 mkdir_ln () { mkdir -p $2:t && ln -s $1:A $2 } cd source zmv -p mkdir_ln -Q '**/^*.dontcopy(m-7^/)' '../target/$f' 

Выше я использую модификатор истории (:A) чтобы превратить первый аргумент в абсолютный путь. Если вы хотите создать относительные символические ссылки, вам нужно будет создать правильный целевой путь с правильным количеством компонентов ../ .

 mkdir_ln () { mkdir -p $2:t && ln -s ${1//[^/]##/..}/$1 $2 } 

Насколько я могу судить, флаг -a будет делать, как вы просите; копировать рекурсивно при сохранении символических ссылок. Например:

 $ mkdir -vp foo/{bar,baz}; touch foo/file; ln -vs target foo/symlink mkdir: created directory `foo' mkdir: created directory `foo/bar' mkdir: created directory `foo/baz' `foo/symlink' -> `target' $ tree -l foo foo ├── bar ├── baz ├── file └── symlink -> target 2 directories, 2 files $ rsync -a foo/ foo1/ $ tree -l foo1 foo1 ├── bar ├── baz ├── file └── symlink -> target 2 directories, 2 files 
  • ld не может найти существующую библиотеку
  • понимать обозначение символических ссылок
  • Нет разрешения на внешний диск
  • Создание символических ссылок в каталоге etc без доступа root
  • Поведение Asterisk при создании ссылок
  • Создание пользователя proFTPd
  • Можно ли заменить каталог символической ссылкой без разрешения на запись в родительском?
  • Как использовать ls, используя длинный формат (-l), в то же время следуя символическим ссылкам каталога?
  • Получить список каталогов в иерархии, которые содержат только символические ссылки
  • cp SOMEFILE .. копирует в другой каталог после cd'ing через символическую ссылку
  • ls .. не работает должным образом с символическими ссылками
  • Interesting Posts

    Размер памяти для работы с ядром ядра

    Как я просматриваю интернет из системы Linux, маскируя ее как систему Windows или OSX?

    Можно ли использовать Grub для запуска двоичного файла EFI?

    Удалите файлы, не содержащие ".zip" в их имени файла.

    Могу ли я использовать разделенное изменение размера для разделов, используемых mdadm

    RSync – Permission denied (13) при выполнении rsync в качестве корня

    Обнаружение и категоризация драйверов устройств в запущенной системе

    Игнорировать все совпадения для отрицательного шаблона extglob в рекурсивном ls

    Доступ к прокси-серверу ssh с другого хоста

    Почему GUI – плохая идея в Linux Server?

    Обновление скручивания в Centos 5.6

    Почему awk печатает всю строку, когда я хочу, чтобы она печатала переменную?

    Обмен пропускной способностью между IP-адресами

    Firefox пытается автоматически определить кодировку во время резервного копирования

    копирование с удаленного сервера на мой hdd с помощью псевдонима или сокращение длинных путей к файлам

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