Как скопировать рекурсивную структуру каталогов, создавая только символьные ссылки на файлы?

Как скопировать рекурсивную структуру каталогов, создавая только символьные ссылки на файлы?

29.09.2012 06:29:28 Просмотров 32 Источник

Как лучше всего скопировать всю рекурсивную структуру каталогов, где все файлы просто копируются как символические ссылки?

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

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/12649438/how-to-copy-recursive-directory-structure-while-creating-symbolic-file-links-onl#comment17062606_12649438
И можете ли вы привести небольшой пример того, что вам нужно, чтобы, если кто-то что-то придумает, он, по крайней мере, пошел в том же направлении, что и вы? Я предполагаю, что вы хотите каталоги как каталоги?
https://stackoverflow.com/questions/12649438/how-to-copy-recursive-directory-structure-while-creating-symbolic-file-links-onl#comment17062629_12649438
+1 для @ruakh ... это звучит как проблема XY . Какую проблему вы пытаетесь решить? Что ты на самом деле пытаешься сделать?
https://stackoverflow.com/questions/12649438/how-to-copy-recursive-directory-structure-while-creating-symbolic-file-links-onl#comment17062658_12649438
Я использовал систему, которая делает это для установки эталонной копии программного обеспечения один раз, а затем создает несколько рабочих установок (которые содержат смесь файлов конфигурации и данных, смешанных с неизменяемым программным обеспечением), используя символические ссылки для ссылки на эталонную копию. Хитрость заключается в том, чтобы убедиться, что вы создаете реальные каталоги и соответствующие символические ссылки. Но сценарий, который я использую, - это 340 с лишним строк; 110 из них-комментарии или пустые строки.
https://stackoverflow.com/questions/12649438/how-to-copy-recursive-directory-structure-while-creating-symbolic-file-links-onl#comment17062778_12649438
Дело в том, что у меня есть много файлов в каталоге и в подкаталогах. Я передаю имя каталога верхнего уровня программе, которая обрабатывает все данные. Теперь я хочу сделать копию этой структуры каталогов и изменить один из файлов где-то там и запустить программу снова. Но на самом деле я не хочу делать полную копию, потому что ее размер составляет 100 Гб. Вместо этого я хочу создать копию структуры каталогов, заполненную соответствующими символическими ссылками. После этого я могу войти в эту структуру и удалить одну из символических ссылок, заменить ее своим новым содержимым и перезапустить программу.
https://stackoverflow.com/questions/12649438/how-to-copy-recursive-directory-structure-while-creating-symbolic-file-links-onl#comment17066373_12649438
Ах, у вас есть большой торрент-файл, который вы хотите сохранить посев, но также посев на другой трекер, который связал тот же контент с другим.файл НФО. Имеет смысл.
https://stackoverflow.com/questions/12649438/how-to-copy-recursive-directory-structure-while-creating-symbolic-file-links-onl#comment17142026_12649438
Я вижу, это было закрыто. Может ли кто-нибудь предложить более подходящий сайт stack exchange, чтобы опубликовать это? Спасибо!

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

ghoti

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 по-разному для каждого уровня каталога.

Кроме того, это непроверено, и я не собираюсь его проверять. Если это дает вам вдохновение, это здорово. :)

Serge

29.09.2012 07:13:56

Это не то решение, которое создаст символические ссылки, но оно создаст жесткие ссылки.

cp -rl $src $dst

Аферы:

  • это труднее, чтобы увидеть, если файл заменен на дерево
  • оба дерева должны находиться в одной файловой системе
Помочь в развитии проекта:
Закрыть X