1

У меня есть программа, работающая на Raspberry Pi 3 (Rasbian Jesse), которая сбрасывает файлы в каталог с именем /mount-point . При загрузке я монтирую общий ресурс Windows, называемый /incoming в /mount-point . Есть программа для Windows, которая обрабатывает эти файлы, когда они попадают в общий ресурс.

mount -t cifs -o username=<share user>,password=<share password> //<Win-IP>/c/incoming /home/pi/mount-point

Проблема возникает, если сеть выходит из строя. Если сеть не работает, программа linux продолжает сбрасывать файлы в каталог /mount-point . Когда сеть восстанавливается, общий ресурс Windows перемонтируется, и любые файлы, находящиеся в /mount-point монтирования, монтируются и исчезают.

Есть ли способ "объединить монтирование" общего ресурса Windows, чтобы любые файлы, находящиеся в данный момент в /mount-point , не были скрыты и отображались в /incoming на windows?

2 ответа2

4

Нет способа напрямую объединить содержимое такой точки монтирования. Ближайший вариант - использовать объединение / чрезмерное монтирование, но они не работают надежно с сетевыми файловыми системами, и то, что вам нужно сделать, чтобы заставить его работать вообще, в этом случае довольно неинтуитивно.

В идеале, вы должны, вероятно, либо:

  1. Научите вашу программу определять, смонтирован ли общий ресурс или нет, и затем заставить его кэшировать файлы, если общий ресурс не смонтирован, а затем записать их, когда он есть.
  2. Пусть ваша программа записывает данные в отдельное место и использует периодическое задание (используя cronjob или системный таймер), чтобы скопировать файлы в общий ресурс, если он смонтирован.

Оба случая являются более надежными, чем объединение, и оба они также намного более независимы от базовой конфигурации хранилища (что является хорошим фактором для удобства обслуживания).

0

Можно (хотя и несколько громоздко) монтировать объекты таким образом, чтобы Linux видел локальные и удаленные файлы в одном каталоге. Однако ваша Windows будет видеть только те файлы, которые существуют на стороне Windows.

Если вы скажете своей программе переместить файлы в /mount-point/some-dir/ , который не существует, когда общий ресурс не смонтирован, он может или не может быть достаточно умен, чтобы попробовать это позже. Если он достаточно умен, это может быть самый простой обходной путь.

Если он недостаточно умен, дайте ему переместить файлы в другой каталог и запустите задание cron, чтобы переместить файлы в общий ресурс. Сделай это достаточно умным. Простой mv прервет работу, если целевой каталог не существует.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .