У меня есть один каталог, folder1
, то, что я совместно использовал через самбу. У меня есть другой каталог, folder2
, это не совместно используется, но содержит много подпапок, которые я действительно хочу совместно использовать. Когда пользователь соединяется с моим общим folder1
Я хотел бы, чтобы они также видели подкаталоги от folder2
.
В настоящее время способ, которым я выполняю это, состоит в том, чтобы открыться folder2
в гноме щелкните правой кнопкой по каталогам там и выбору Make Links
. Затем я беру символьные ссылки и вручную вырезаю и вставляю их в folder1
.
Я хотел бы иметь его так, чтобы, когда я создаю новый каталог в folder2
, символьная ссылка на него создается внутри folder1
. Как я должен пойти об этом? Я использую Ubuntu 14.04
Могут быть автоволшебные способы сделать это, но просто пишущий, что несколько сценариев оболочки являются, вероятно, самым легким способом обратиться к этому.
Первый, вместо того, чтобы просто создать новый подкаталог в folder2, сделайте это со сценарием, который также создает символьную ссылку одновременно. Следующий непротестированный сценарий сделает это, как только Вы заполняете реальные пути к своим каталогам. Базовый сценарий действительно прост, но я добавил некоторую ошибку при обработке, таким образом, это будет иметь шанс в реальном мире.
#!/bin/bash
## create subdirectory and symbolic link
## Usage: script-name <name of new subdirectory to create and link>
PRIVATE="path to private directory" ## Put real path here
SHARED="path to shared directory" ## Put real path here
cd "${PRIVATE}"
if [ -z "${1}" ]
then
echo "Aborting - no new directory name specified"
exit 1
fi
if [ -e "${1}" ]
then
echo "Aborting - file or directory with that name already exists"
exit 1
fi
mkdir "${1}"
RC=$?
if ((RC))
then
echo "Aborting - Failed to create new private subdirectory named [${1}] in [${PRIVATE}] with error code [${RC}]"
exit ${RC}
fi
cd "${SHARED}"
ln -s "${PRIVATE}/${1}" .
RC=$?
if ((RC))
then
echo "Aborting - Failed to create new symlink named [${1}] in [${SHARED}] with error code [${RC}]"
exit ${RC}
fi
exit 0
Другие проблемы:
, Если необходимо получить доступ к этому от gui вместо командной строки, просто добавьте немного кода, который называет yad для создания диалогового окна, чтобы попросить название каталога создавать и затем создавать запись для сценария в системе меню и, дополнительно, на рабочем столе или панели. Выполнение этого просто, но вне объема этого вопроса.
Точно так же, если что-то еще создает новые подкаталоги в folder1, можно записать сценарий, который сканирует для новых подкаталогов в folder1 и затем символьных ссылках их к folder2.
Вы могли выполнить это вручную или выполнить его в цикле, где это делает свою работу, спит некоторое время, и затем работает снова.
Этот сценарий "демона" мог или быть запущен вручную или выполнен из Вашего .login сценария, таким образом, это запустится каждый раз, когда Вы входите в систему. Это могло также быть запущено с крона, если Вы удостоверяетесь, что любые подкаталоги и ссылки, которые это создает, имеют желаемого владельца, группу и полномочия. (Вы, вероятно, не хотите их принадлежавший корню, который является пользовательскими выполнениями крона под.)
Все это зависит от того, каковы Ваши строгие требования.
, Если или folder1 или folder2 потребуют поднятых полномочий для записи, то Ваш сценарий должен будет или быть выполнен с теми полномочиями или иметь sudo или два для обработки этого, и возможно, запись в sudoers, таким образом, это не должно будет просить пароль каждый раз. Затем сам сценарий должен был бы иметь безопасного владельца и ограничил полномочия и быть сохраненным в каталоге, который также требует поднятых полномочий для записи - из соображений безопасности.
Вы, возможно, также должны рассмотреть случай, когда подкаталоги удалены из folder1. Затем Вы, вероятно, захотите удалить поврежденные символьные ссылки из folder2. Подход/код был бы очень похож на вышеупомянутое.