Подтвердить что ты не робот

Могу ли я сопоставить несколько каталогов в одном?

У меня такое чувство, что я уже знаю ответ на этот вопрос, но я подумал, что проверю.

У меня есть несколько разных папок:

images_a/
images_b/
images_c/

Можно ли создать какую-то символическую ссылку, чтобы в этом новом каталоге было содержимое всех этих каталогов? То есть этот новый "images_all" будет содержать все файлы в images_a, images_b и images_c?

4b9b3361

Ответ 1

Нет. Вам нужно будет символически связать все отдельные файлы.

Что вы можете сделать, так это создать задание для периодического запуска, которое в основном удалит все существующие символические ссылки в images_all, а затем заново создаст ссылки для всех файлов из трех других каталогов, но это немного kludge, что-то вроде этого:

rm -f images_all/*
for i in images_[abc]/* ; do; ln -s $i images_all/$(basename $i) ; done

Обратите внимание, что, хотя это задание выполняется, может показаться другим процессам, что файлы временно исчезли.

Вам также нужно будет следить за случаем, когда в двух или более каталогах существует одно имя файла.


Возвращаясь к этому вопросу через некоторое время, мне также приходит в голову, что вы можете свести к минимуму время, в течение которого файлы недоступны.

Если вы связываете их с другим каталогом, тогда выполняйте относительно быстрые операции mv, которые минимизируют время. Что-то вроде:

mkdir images_new
for i in images_[abc]/* ; do
    ln -s $i images_new/$(basename $i)
done

# These next two commands are the minimal-time switchover.
mv images_all images_old
mv images_new images_all

rm -rf images_old

Я не тестировал, чтобы кто-нибудь, кто его реализовал, должен был подтвердить пригодность или иначе.

Ответ 3

чтобы добавить к paxdiablo отличный ответ, я думаю, вы могли бы использовать cp -s
(-s или - -s ymbolic-link), который создает символические ссылки вместо буквального копирования

возможно, ускорить или упростить массовое добавление символических ссылок в папку "слияния" A файлов из папок B и C.

(я не проверял это все же)

Я не могу вспомнить верхнюю часть моей головы, но я уверен, что есть какая-то опция для CP, чтобы НЕ перезаписывать существующие, таким образом, только символические ссылки новых файлов будут "cp -s" ed