Копирование файла, который записывается одновременно

Этот связанный вопрос не может решить мою точную проблему, поэтому я пишу аналогичный вопрос.

Мой сценарий следующий: программа (выполняется по вину) записывает в файл размером около 10-500 КБ. Примерно 1 КБ дополнение происходит в каждом событии записи (строки добавляются в конец файла, других методов записи не существует), интервал между записями составляет от микросекунд до 240 минут. (Обычно интервал между записями составляет от 3 до 10 минут, но вышеупомянутые временные границы являются теоретически возможными пределами).
Я не могу изменить этот интервал, и он случайный с точки зрения пользователя. Интервал записи изменяется, поэтому возможно, что события записи ABCD следующие: AB 60 мин; До 5 секунд; CD 357,4 с и так далее.

Я хочу скопировать файл каждые 25-30 минут, чтобы редактировать его извне (автоматически, конечно).

Какое лучшее решение, гарантирующее отсутствие условий гонки, появится? Я не хочу писать алгоритм синхронизации, но если это необходимо, я могу это сделать. Кроме того, копирование – внешнее редактирование может быть расширено до интервала в 1 день, не более. Вино не позволяет перенаправить выход.

$ grep sda4 /etc/mtab /dev/sda4 /foo xfs rw,relatime,attr2,delaylog,noquota 0 0 

ОБНОВИТЬ

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

One Solution collect form web for “Копирование файла, который записывается одновременно”

Нет ничего, что обеспечит вам гарантии того, что вы не будете копировать «частичную запись» (с точки зрения вашего приложения) во всех случаях, кроме:

  • сотрудничать с этим другим процессом (т. е. методом, чтобы вы могли его сбросить и остановить / перезапустить его записи)
  • используя «реальную» транзакционную (базу данных) систему, которая позволяет принимать согласованные снимки / резервные копии / отвалы

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

(Даже если приложение всегда записывает свои записи с помощью одного вызова или эквивалента записи, может случиться, что приложение прерывается во время вызова записи и что только часть записи фактически была обработана.)

  • Изменение размера логического тома без бесплатных экстентов, но с свободным дисковым пространством
  • rsync разреженного изображения qemu увеличивает размер диска
  • df -h показывает размер fs меньше размера LV
  • Как вы обнаруживаете неисправную файловую систему XFS?
  • Переразделение / домашний раздел в CentOS
  • Ограничить доступ к файлам только для добавления
  • Как отремонтировать CentOS? Не удалось установить / sysroot
  • Какая файловая система лучше для Ceph?
  • Не удалось установить том XFS после перезагрузки - неизвестная файловая система типа «xfs»
  • Отключить вложенные монтирования, не работающие после размонтированного корня гнезда
  • В чем разница между символической связью и привязкой к fstab?
  • Interesting Posts

    Zfs отправляет снимок на другой сервер с разным расположением

    Не удалось перемонтировать / tmp в оперативную память (tmpfs)

    Приложение для отладки последовательного порта для Linux

    как правильно экспортировать имя зарегистрированного пользователя?

    Количество строк с определенным значением в столбце для всех файлов в каталоге рекурсивно

    Баш обнаруживает искусство ascii

    Перемещение файлов на другой жесткий диск

    процесс работает без амперсанда, но не работает с амперсандом

    socat два последовательных порта вместе

    Могло ли отключить мониторинг частоты ядра процессора, чтобы повысить производительность и / или время автономной работы?

    Заголовок вкладки терминала не работает корректно с помощью MacPorts bash

    Stat, блоки и размер сектора – ext4

    Обновление малой версии Postgres в Debian с помощью apt

    Несколько доменов с одним открытым IP-адресом?

    Как gcc обрабатывает разрешения файлов?

    Linux и Unix - лучшая ОС в мире.