Не видны обновления файлов после копирования на сетевой накопитель
есть такая проблема: дано условно n-количество ПК и сетевой накопитель. ПК1 делает запись логов работы программы на свой жёсткий диск. На нём же запущен скрипт который раз в несколько секунд делает копию файлов на сетевой накопитель, на других ПК которые открывают этот сетевой накопитель, обновления файлов бывают происходят и всё работает нормально, а бывает не происходят, как будто ничего не копируется, НО если зайти в папку сетевого накопителя куда копируются файлы через ПК1, в течении примерно 1 секунды видно старый размер файлов, а после этого их состояние обновляется и появляется новый обновлённый размер файлов и только после этих действий на других ПК также становится видно что файлы обновились.
данная проблема была замечена при копировании в разных вариациях ПК1 и сетевых накопителях:
- ПК1-windows подключен к сетевому накопителю по smb, копирование через bat скрипт с командой robocopy /e /mt /dcopy:DAT который в цикле раз в 5 секунд вызывает её
- ПК1-astralinux подключенному к сетевому накопителю по nfs через обычное монтирование каталога, копирование через скрипт bash командой cp -rvuT раз в 3 секунды.
В чём вообще может быть проблема? В каком направлении искать?
Ответы (1 шт):
Проблема оказалась в кэшировании файлов. Разные операционки, как и их разные версии, по разному выполняют кэшировании содержимого файлов.
В данном случае проблема с обновлением файлов была связана с тем, что программа для просмотра текстовых файлов выполняла ежесекундное открытие файла на чтение, читала информацию и закрывала файл, вследствии чего операционка не успевала корректно откэшировать данные.
В коде программы изменили ежесекундное открытие файла на ежесекундную проверку системной информации размера файла, и, если размер изменился, то тогда только производится считывание файла.