Автоматически создайте символьные ссылки ссылок между каталогами, создав один uber каталог

У меня есть один каталог, folder1, то, что я совместно использовал через самбу. У меня есть другой каталог, folder2, это не совместно используется, но содержит много подпапок, которые я действительно хочу совместно использовать. Когда пользователь соединяется с моим общим folder1 Я хотел бы, чтобы они также видели подкаталоги от folder2.

В настоящее время способ, которым я выполняю это, состоит в том, чтобы открыться folder2 в гноме щелкните правой кнопкой по каталогам там и выбору Make Links. Затем я беру символьные ссылки и вручную вырезаю и вставляю их в folder1.

Я хотел бы иметь его так, чтобы, когда я создаю новый каталог в folder2, символьная ссылка на него создается внутри folder1. Как я должен пойти об этом? Я использую Ubuntu 14.04

1
задан 28 October 2014 в 17:32

1 ответ

Могут быть автоволшебные способы сделать это, но просто пишущий, что несколько сценариев оболочки являются, вероятно, самым легким способом обратиться к этому.

Первый, вместо того, чтобы просто создать новый подкаталог в 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. Подход/код был бы очень похож на вышеупомянутое.

1
ответ дан 11 November 2019 в 12:32

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

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