Я много лет использовал 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
Думаю, в этом проблема. Самба Что-то возвращается и что-то делает с файлом, что изменяет время модификации. Я понятия не имею, что и почему, но это действительно мешает редакторам и затрудняет работу. Я видел, что на cifs монтируют и под linux, когда сервер samba 4.
Это также происходит на моем сетевом хранилище 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
Я узнал, что если вариант oplocks = yes
Samba будет вести себя так, как описано выше. Итак, в любом нормальном дистрибутиве Linux вы можете установить oplocks = no
. Однако я не уверен, как обойти QNAP, перезаписывая файл конфигурации каждый раз, когда я меняю конфигурацию samba (и, возможно, при перезагрузке?). Так что я не буду принимать это как ответ, но это может помочь кому-то еще с той же проблемой в обычном дистрибутиве Linux.