LINUX.ORG.RU
ФорумAdmin

rsync - загрузить только дельту (новые строчки) в отдельный файл

 , ,


0

1

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

На ум приходит rsync. Я знаю, что rsync копирует только новые (изменившиеся данные). Но как его заставить писать новые строки из исходного удалённого файла в отдельный файл, а не добавлять к локальному?

Чтобы каждый час забирать только строки из лога накопившиеся за этот период. За прошлые часы данные хранить не нужно.


Ответ на: комментарий от sdio

rsync не тот инструмент, который тебе нужен.

можно аргументированно?

не писать же самому велосипед, который будет делать дельту, там хеш этого построчного текстового лога и загружать только новые строчки за час... по-моему rsync как раз, только нужна опция чтобы он писал diff в новый файл а не приписывал к существующему.

Den0k ()
Ответ на: комментарий от Den0k

можно аргументированно?

Какие могут быть аргументы, если rsync так не умеет?

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

sdio ★★★★★ ()
Последнее исправление: sdio (всего исправлений: 2)
Ответ на: комментарий от handbrake

ага, уже.

про offset есть только в опции max-size.

или хранить файл за прошлый час, дать rsync обновить его и потом сделать diff... но это же ужасно.

Den0k ()

В логах есть время, бери по временным меткам

sdio ★★★★★ ()
Ответ на: комментарий от Den0k

так в самом питоне есть библиотечка для diff, при помощи нее я думаю те кусочки вполне можно определить.

pylin ★★★★★ ()

Для файла сохраняй последнюю прочитанную позицию и с неё начинай читать в следующий раз. Для того чтобы обойти проблемы с ротацией логов засунь в ротатор вызов твоего скрипта(pre-rotate hook).

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Для файла сохраняй последнюю прочитанную позицию и с неё начинай читать в следующий раз.

файл на удалённой машине. я бы его забрал rsync, scp, но как указать offset?

Den0k ()
Ответ на: комментарий от Den0k

А запустить скрипт на удалённом сервере? Ну или подмонтировать по nfs/sshfs, например. Я за sshfs, только надо поиграться с опциями кэширования (я бы отключил от греха подальше). Опять-таки, нужно учитывать периодическую ротацию логов.

true_admin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.