Как скопировать рекурсивную структуру каталогов, создавая только символьные ссылки на файлы?
Как лучше всего скопировать всю рекурсивную структуру каталогов, где все файлы просто копируются как символические ссылки?
Другими словами, копия должна отражать всю структуру каталога (суб-)исходного каталога, но каждый файл должен быть просто символической ссылкой.









Ответы - Как скопировать рекурсивную структуру каталогов, создавая только символьные ссылки на файлы? / How to copy recursive directory structure while creating symbolic file links only?

29.09.2012 06:59:16
Я думаю... сначала вы хотите сделать свои каталоги...
cd "$source"
find . -type d -exec mkdir -p "$target/{}" \;
Затем создайте свои символические ссылки...
cd "$source"
find . -type f -print | (
cd "$target"
while read one; do
deep=$(echo "${one:2}" | sed 's:[^/][^/]*:..:g')
ln -s "${deep:3}/${one:2}" "$(basename "$one")"
done
)
Обратите внимание, что это не сработает, если в именах файлов есть строки или, возможно, другие нечетные символы. Я не могу придумать быстрый выход из этого (я имею в виду, делая это в find -exec
), так как вам нужно вычислить $deep по-разному для каждого уровня каталога.
Кроме того, это непроверено, и я не собираюсь его проверять. Если это дает вам вдохновение, это здорово. :)