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

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

Мой сценарий следующий: программа (выполняется по вину) записывает в файл размером около 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 “Копирование файла, который записывается одновременно”

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

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

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

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

  • Как проверить версию файловой системы?
  • В чем разница между символической связью и привязкой к fstab?
  • Почему ext4 рекомендуется только до 16 ТБ?
  • Какие операции с метаданными файловой системы фактически регистрируются в ext4 & xfs?
  • Использует ли какая-либо файловая система Copy for Write Mechanism для CP
  • Как рассчитываются дельта XFS для xfsdump -ln?
  • Является ли xfs_fsr безопасным для прерывания?
  • Монтирование образа раздела XFS из xfs_copy
  • Некоторое пространство загадочно исчезает в файловых системах XFS
  • Разница в пространстве, зарезервированная для inodes в разделах ext4 и XFS
  • XFS Volume имеет неправильный размер блока после установки
  • Interesting Posts

    Установка разделов HPFS для чтения / записи?

    удалите ^ M из solaris perl одним лайнером в том же файле

    Насколько большой должен быть раздел rootfs в Arch Linux?

    Невозможно отобразить греческие буквы на Mutt 1.7

    Возможно ли иметь условные параметры в ~ / .ssh / config в зависимости от вызывающего приложения (ssh или sshfs)?

    Ограничение процессов не должно превышать 10% использования ЦП

    bash_completion не работает в dtach

    Ярлык клавиатуры для открытия gnome-терминала в GNOME 2.28.2

    Анализатор пакетов для перехвата и фильтрации входящего трафика перед любым клиентским приложением

    как я могу попросить p7zip через CLI для пакетных zip-каталогов в их соответствующие сжатые архивы

    Преобразуйте аргумент в верхний регистр, чтобы передать его как переменную

    Перезагрузить файл .bashrc для родительской оболочки

    Обновление Strange nagios-nrpe-сервера от Jessie до Stretch

    Заменить строку последовательным индексом

    gksudo не выполняет настройку в / etc / sudoers

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