Получение уведомлений о создании файлов для монтирования CIFS в Linux

У меня есть общий ресурс Windows, смонтированный через CIFS на сервере Ubuntu. Мне нужен способ узнать, когда новый файл был добавлен в общий ресурс Windows. Я попробовал эту программу inotify:

http://www.thegeekstuff.com/2010/04/inotify-c-program-example/

Который отлично работает со стандартными каталогами, но не может уловить какие-либо изменения CIFS. Мне не обязательно использовать inotify, хотя я бы хотел, но любые предложения о том, как добиться получения уведомлений о создании файлов, были бы замечательными.


person ofosho    schedule 14.11.2011    source источник


Ответы (5)


Я также работал над этим и столкнулся с той же проблемой - кажется (после небольшого поиска в Google), что, к сожалению, невозможно использовать inotify на смонтированных разделах CIFS. Следующее было в сообщении форума Redhat из пару лет назад:

«В настоящее время нет, это невозможно с CIFS. Перехватчики VFS, позволяющие файловой системе настраивать дополнительные уведомления, были недавно удалены. Единственным «пользователем» из них был CIFS, и он все равно никогда не работал должным образом. Интерфейс ядра для этого был тоже серьезные проблемы.

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

Хотя это было пару лет назад, кажется, мы не приблизились к тому, чтобы это средство было доступно - позор, я тоже мог бы им воспользоваться!

person Stephen Sullivan    schedule 11.04.2012

Я тоже столкнулся с этим и пришел к тому же выводу, что и Стивен Салливан (CIFS + inotify = no go).

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

Сказав это, это работает, так что наслаждайтесь: http://github.com/rubyruy/watchntouch

person rubyruy    schedule 05.05.2013

Это можно сделать .. вроде

Если вы настроили сервер webdav и включили общий ресурс в качестве местоположения webdav, вы можете отслеживать местоположение на вашем сервере samba при доступе к нему через webdav с вашего компьютера с Windows.

Большая проблема с этим заключается в том, что права доступа к файлам - это сука ... как обычно с apache2 webdav, поскольку в нем отсутствует сквозная аутентификация.

person Peter Elzinga    schedule 12.07.2013

Для хостов Windows, использующих док-контейнеры Linux, есть подробная статья по этой проблеме с предоставленным решением, которое работает «docker-windows-volume-watcher»: http://blog.subjectify.us/miscellaneous/2017/04/24/docker-for-windows-watch-bindings.html

Похоже, в ближайшее время поддержка Linux-реализации CIFS inotify не появится.

person MyUserInStackOverflow    schedule 15.04.2018

Тема старая, но актуальная! Мой ответ на это: "это зависит!". Из моих эмпирических тестов в это время поведение вполне ясно. Если хост Linux инициирует событие файловой системы [при монтировании CIFS], то inotify увидит его нормально. Если компьютер с Windows, на котором размещается монтирование CIFS, инициирует событие файловой системы, то inotify [на компьютере с Linux] его вообще не увидит.

Если ваша цель состоит в том, чтобы хост Linux получил уведомление о том, что хост Windows создал файл или записал его в файл, то вам не повезло. Поскольку это, вероятно, наиболее желательное использование этого механизма, это делает этот тонкий ответ «это зависит» не таким ужасно полезным!

person RickS    schedule 31.03.2020