Я много лет использовал CentOS 5 и 6 в качестве сервера веб-разработки. Я редактирую файлы непосредственно на общей папке samba, установленной на Windows 7 (ранее Windows XP). Я пытаюсь перейти на CentOS 7 с Samba 4.8. Когда я редактирую файл на общей папке samba, возникает странная проблема. Я редактирую файл, сохраняю его и получаю сообщение «Файл изменен вне этого приложения». Такое часто случается.
Я пробовал "dos filetime resolution = yes". Это не помогло, но я думаю, что это решение только для действительно старого программного обеспечения, потому что Windows 7 показывает нечетное время.
Итак, я запустил watch -n 1 stat file.txt
и сохранил его. Отметка времени изменения изменена на:
2019-08-10 22:48:19
но через несколько секунд он снова изменился на:
019-08-10 22:48:33
Думаю, в этом проблема. Samba Что-то возвращается и что-то делает с файлом, что изменяет время модификации. Я понятия не имею, что и почему, но это действительно мешает редакторам и затрудняет работу. Я видел, что на cifs монтируются и под Linux, когда сервер samba 4.
Это также происходит на моем NAS QNAP, на котором работает Samba 4.4.
Есть идеи?
Обновление:
inotifywait -m /home
...... on save:
/home/ OPEN output.txt
/home/ ATTRIB output.txt
/home/ MODIFY output.txt
/home/ CLOSE_NOWRITE,CLOSE,ISDIR
/home/ ATTRIB output.txt
...... about 10-15 seconds after the save:
/home/ CLOSE_NOWRITE,CLOSE output.txt
/home/ CLOSE_WRITE,CLOSE output.txt
/home/ ATTRIB output.txt
Я узнал это, если Samba опции oplocks = yes
будет иметь вышеупомянутое поведение. Таким образом в любом нормальном дистрибутиве Linux Вы могли установить oplocks = no
. Однако я не уверен, как к обходному решению QNAP перезапись файла конфигурации каждый раз я изменяю конфигурацию самбы (и возможно на перезагрузке?). Таким образом, я не приму это как ответ, но он мог бы помочь кому-то еще с той же проблемой в нормальном дистрибутиве Linux.