Как создать теневой каталог

Я хочу создать теневой каталог каталога D. Теневой каталог D1 должен иметь ту же структуру, что и D, но не должен разделять какие-либо узлы с D. Каждый файл в D должен быть представлен символической ссылкой на этот файл в D1. Идея состоит в том, что операции с D1 никогда не должны изменять D, поэтому я могу свободно удалять что-либо в D1, не затрагивая D. Как я могу этого добиться? Я, конечно, мог бы сделать простую древовидную копию D, но это сделало бы дубликаты файлов.

[Следующее было перемещено из комментария.] Вот чего я хочу добиться. У меня есть несколько музыкальных файлов в разных местах. Я могу создать единый каталог D, содержащий символические ссылки на все из них. Я планирую создать теневой каталог D1, который изначально содержит копии символических ссылок D. Когда я проигрываю музыку, я удаляю ее узлы из D1, так что D1 содержит только указатели на музыку, которую я не играл (на разных уровнях в D). Между тем моя оригинальная музыкальная библиотека не изменилась. Я понимаю, что могут быть и другие способы добиться того же, но этот метод конструктивно прост и требует только стандартного программирования оболочки.

0
задан 19 July 2021 в 22:39

1 ответ

Помимо использования ln , вы также можете создавать символические ссылки на файлы с помощью cp , используя флаг -s . Это полезно, потому что это все еще работает с флагами -r и -a , что означает, что вы можете клонировать все дерево символических ссылок, от D до D1.

Для правильной работы D должен быть абсолютным путем или преобразован в него с помощью $ (realpath D) .

Собираем все вместе:

cp -asT "$(realpath D)" D1

Для ясности, редактирование файлов в D1 все равно изменит оригиналы в D, но ссылки в D1 можно безопасно удалить.

1
ответ дан 28 July 2021 в 11:17

Другие вопросы по тегам:

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