Intel HD 530 не распознается ядром 4.4.1

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

cp -as source target

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

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

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

1
14.02.2016, 03:02
0 ответов

Теги

Похожие вопросы