LinuxForum.Fans
Тема

Настройка incron и samba

Автор: neket 21 сообщений 7668 просмотров
#336748

Доброго времени суток! Возникла следующая проблема. Есть 2 компьютера: один под Windows XP, другой под Mageia 3. На Windows расшарена папка. Эту папку в Mageia я монтирую

text

mount -t cifs //192.168.x.xxx/xxx /home/xxx -o username=xxx,password=yyy,iocharset=utf8,file_mode=0777,dir_mode=0777

Необходимо при создании/изменении/удалении файлов в этой примонтированной директории производить определённые действия. Incron настроил, проверил на локальных папках - всё отлично работает. Но вот если настроить на примонтированную директорию, то ничего не работает.

Нашёл вот такую вещь: http://linuxforum.ru/viewtopic.php?id=25434 и http://www.gentoo.ru/node/26352#comment-195945

Как я понял из комментариев


incron использует inotify. inotify — это выплёвывание ядром событий, когда его (ядро) просят что-то сделать с файлами. Действия на удалённой системе производит не наше ядро. Отсюда вывод…

Samba и incron не смогут взаимодействовать друг с другом...

А если использовать NFS? Или настраивать VFS и samba?

И опять же мне не понятно: если Samba поддерживает inotify (с версии 3.0.25), значит это для чего-то используется?

В общем очень прошу помочь в решении этого вопроса.

Также обсуждаю эту тему здесь: http://forum.mageialinux.ru/viewtopic.php?pid=15135#p15135

#336749
"neket" написал:
Но вот если настроить на примонтированную директорию, то ничего не работает.

Для начала покажите, как настраивали.
Только что проверил, inotify вполне отрабатывает на самба-шарах. Если не получится настроить incron, можно попробовать написать свой костыль, если опишите задачу подробнее.

ЗЫ. Хотя, если вы имеете ввиду изменения в отслеживаемой директории, вносимые на удалённом компьютере - то да, похоже они не отслеживаются.
ЗЗЫ. Проблема в CIFS

#336792

Задача следующая. Есть компьютер на Windows XP. На нём расшарена маленькая папка с 2-мя файлами. Файлы периодически обновляются, а именно удаляются старые, записываются новые. Задача отдавать эти файлы более 20 компьютерам в локальной сети. Причём отдавать с задержкой не более 5 секунд после обновления файлов. Windows XP по условиям лицензии может давать не более 10 одновременных соединений. В сети есть файловых сервер на Mageia.

Возникла идея: примонтировать расшаренную папку Windows и как только в ней обновились файлы, с помощью incron копировать эти файлы в расшаренную директорию Mageia, из которой уже все компьютеры сети берут файлы. Таким образом на компьютер с Windows будет гарантированно идти только 1 сетевое соединение.

По причине того, что файлы должны как можно быстрее доходить до потребителя и был выбран incron.

#336793
"-=Serj=-⇓" написал:
ЗЫ. Хотя, если вы имеете ввиду изменения в отслеживаемой директории, вносимые на удалённом компьютере - то да, похоже они не отслеживаются.
ЗЗЫ. Проблема в CIFS

Зачем же тогда samba поддерживает inotify? Для чего оно тогда используется? Разве не для отслеживания изменений по сети?

#336812

Ну хз. Накатать скрипт, который каждые 5 минут будет проверять md5 например и если что раскидывать по компам.

#336828
"neket" написал:
В сети есть файловых сервер на Mageia.

А почему бы изначально файлы не хранить на нём, а в XP подключить сетевой ресурс?

#336831
"-=Serj=-⇓" написал:
А почему бы изначально файлы не хранить на нём, а в XP подключить сетевой ресурс?

Потому как стоит очень специфичное windows-ПО, которое может создавать файлы только в локальной директории. Переписывать ПО - не вариант.

"-=Serj=-⇓" написал:
ЗЫ. Хотя, если вы имеете ввиду изменения в отслеживаемой директории, вносимые на удалённом компьютере - то да, похоже они не отслеживаются.

Правильно ли я понимаю что если изменения в расшаренной директории вносятся со стороны Linux-машины, то inotify прекрасно работает, а если с удалённой машины, то нет. Верно?

#336832
"XliN⇓" написал:
Ну не знаю. Накатать скрипт, который каждые 5 минут будет проверять md5 например и если что раскидывать по компам.

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

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

#336833
"neket" написал:
Потому как стоит очень специфичное windows-ПО, которое может создавать файлы только в локальной директории. Переписывать ПО - не вариант.

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

"neket" написал:
Правильно ли я понимаю что если изменения в расшаренной директории вносятся со стороны Linux-машины, то inotify прекрасно работает, а если с удалённой машины, то нет. Верно?

Если изменения вносятся на локальной машине на примонтированном ресурсе, то они отслеживаются.

#336834

Спасибо, буду думать как решить проблему. Если найду решение - напишу:)

#336838

Ещё вопрос. А если использовать NFS? Или здесь всё аналогично?

#336901

neket, накалякал костыль для винды :) - http://ubuntuone.com/4dLfx0uBwLapMooerYXgDY
Для компиляции скачайте Go отсюда https://code.google.com/p/go/downloads/list
Чтобы скомпилировать, наберите в каталоге с программой

text

go build watcher.go

Не забудьте поправить watcher.conf

Программа следит за изменениями в каталоге path_to_watch и отражает изменения в target_path.
ЗЫ. Отрабатывает лишь создание, изменение и удаление файлов. Переименование не отрабатывает.
ЗЗЫ. Должно быть кросс-платформенным

#336952

Ух ты! Спасибо, буду пробовать :)

#336959

Всё работает! Спасибо огромное))

#336961

А ещё не большой вопрос. Можно скомпилировать программу, чтобы она не выдавала всплывающих окон?


P.S. Всё разобрался. Ещё раз спасибо.

Обнаружил небольшой нюанс. В каталоге path_to_watch получается указать только path_to_watch = .
Иначе за директорией следит, но как только происходит событие, пишет "указан недопустимый путь". Как только не пробовал писать путь, всё равно одно и то же. Ну да ладно, не самая большая проблема.

#336992

Будет время - постараюсь допилить.

#337029

Слегка подправил, убрал ошибку с обработкой пути из конфига, добавил обработку переименований. Ссылку на скачивание выше обновил.

#337371

Спасибо за помощь. Обратил внимание на такую вещь. Время от времени получается следующая ситуация. Если файлы в директории path_to_watch заняты другой программой, то выполнение скрипта останавливается с ошибкой...

#337372

Ещё нашёл такую вещь как fcron. Позволяет запускать скрипт, например раз в секунду. Установил, но при запуске

text

service fcron start

Пишет


Starting fcron (via systemctl): Failed to issue method call: Unit fcron.service failed to load: No such file or directory. See system logs and 'systemctl status fcron.service' for details.

Что это значит?(

systemctl status fcron.service выдаёт следующее:

text

fcron.service - LSB: Task Scheduler
          Loaded: loaded (/etc/rc.d/init.d/fcron)
          Active: failed (Result: exit-code) since Sat, 2013-09-14 17:59:14 UTC; 31min ago
          CGroup: name=systemd:/system/fcron.service

Sep 14 17:59:14 localhost.localdomain systemd[1]: Starting LSB: Task Scheduler... Sep 14 17:59:14 localhost.localdomain fcron[22684]: Starting fcron/bin/bash: /usr/sbinDESTSBIN@/fcron: Нет т...га Sep 14 17:59:14 localhost.localdomain fcron[22684]: [FAILED] Sep 14 17:59:14 localhost.localdomain systemd[1]: Failed to start LSB: Task Scheduler. Sep 14 17:59:14 localhost.localdomain systemd[1]: Unit fcron.service entered failed state Sep 14 17:59:18 localhost.localdomain systemd[1]: Stopped LSB: Task Scheduler.

#337435

-=Serj=-, у меня к вам ещё такой скромный вопрос :) На каком языке вы написали демон?

Войдите или зарегистрируйтесь, чтобы ответить.