Есть ли работающее решение для резервного копирования Linux, которое использует inotify?

17

Требуется вечность, чтобы поддержать. Прежде чем мы сможем доверять btrfs или ZFS для резервного копирования инкрементальных снимков, было бы неплохо, если бы существовал демон, который использовал inotify для отслеживания того, какие файлы действительно изменились, чтобы резервные копии работали быстрее? Где эта программа?

Как сделать резервную копию моего Linux-бокса без необходимости каждый раз сканировать всю файловую систему? Мне нужна программа, которая обнаружит новые или измененные фотографии, исходный код и т. Д. И поставит их в очередь для копирования на мой NAS.

joeforker
источник
Вы действительно не дали много информации здесь, особенно относительно того, что вы в настоящее время используете для резервного копирования, какой тип данных. Существует несколько программ для резервного копирования, которые используют журналы для отслеживания изменений в файловой системе, а затем ссылаются на этот журнал во время резервного копирования. Что именно вы пытаетесь выполнить резервное копирование, на какое устройство / приложение, какова природа данных и каков ваш текущий способ их резервного копирования?
WerkkreW
@WerkkreW, я не думаю, что то, что он пытается сделать резервную копию, так важно. Я подозреваю, что все, что позволяет создавать резервные копии на основе событий, было бы интересно узнать. Запрос не является необычным, у OSX есть машина времени, которая основана на событиях.
Zoredache
Я все еще чувствую, что вопрос нуждается в некотором уточнении, прежде чем на него можно будет ответить.
WerkkreW
1
@ Zoredache, конечно, важно то, что я поддерживаю! Если это не важно ... о, подождите ;-) Я хочу создать резервную копию моего домашнего каталога, не имея непригодной для использования машины, в течение n часов, которые потребовались бы для rsync, чтобы просканировать все это, когда единственным новым материалом является набор из фотографий моего новорожденного ребенка.
Joeforker
3
Мне кажется, что вопрос совершенно ясен: резервное копирование Time Machine в Mac OS X происходит быстро, потому что оно отслеживает fsevents, поэтому оно знает, где искать, когда запускает резервное копирование. В Linux есть inotify, средство, аналогичное fsevents, и все же решения для резервного копирования Linux, которые пытаются аппроксимировать Time Machine (например, dirvish), ужасно медленны, потому что не используют inotify. Есть ли что делать?
Бендин

Ответы:

11

Я ответил на свой вопрос с помощью «yum search inotify». Он называется lsyncd и размещен в коде Google.

К сожалению, похоже, что сначала всегда выполняется полная rsync, поэтому мне все равно не поможет, если мой компьютер не будет включен более 14 часов за раз.

Lsyncd использует rsync для синхронизации локальных каталогов с удаленным компьютером, на котором работает rsyncd. Lsyncd наблюдает за несколькими деревьями каталогов через inotify. Первым шагом после добавления часов является rsync всех каталогов с удаленным хостом, а затем синхронизировать один файл, собирая события inotify. Таким образом, lsyncd - это легкое решение для живого зеркала, которое должно быть простым в установке и использовании, хорошо сочетаясь с вашей системой. Смотрите lsyncd --help для подробных параметров командной строки.

joeforker
источник
Это интересная ссылка, я даже думал о том, чтобы реализовать это сам. Но почему на странице написано, что для каждого изменения будут передаваться большие файлы? Я думал, что сама Rsync уже избежит этого?
Ханно Фиц
rsync все еще должен перечитать весь файл на обоих концах, чтобы передать его настолько эффективно, насколько это возможно. В документации lsyncd предполагается, что это может быть неэффективно для больших файлов. Для больших файлов более подходящей будет схема репликации на уровне блоков.
Joeforker
3

Существует новая система под названием fsnotify, предназначенная для решения недостатков, inotifyкоторая была введена для решения проблем dnotify. fsnotifyпозволяет смотреть всю файловую систему без особых хлопот. Надеюсь fsnotify, поможет решить все наши будущие проблемы с резервным копированием Linux.

joeforker
источник
2

Вы можете взломать что-нибудь с помощью Incron .

 / path1 IN_CLOSE_WRITE rsync -au $ @ / $ # backuphhost: / path

hayalci
источник
Incron не может смотреть каталоги рекурсивно
joeforker
ну да! это казалось очень полезным: -S
hayalci
2

Основываясь на исследованиях (не тестировании), кажется, что inotify не может обрабатывать очень большое количество файлов в большинстве систем и / или делает это очень медленно. Нить на http://www.pubbs.net/kernel/200905/109416/ была самой полезной. Она указывала на новую функцию linux, которая, кажется, находится внутри или направлена ​​к mainline, fsnotify, то есть в linux 2.6.31 и позже.

user26055
источник
2

Lsyncd синхронизирует все отслеживаемое дерево при запуске, потому что в 99% случаев это разумно. Вы хотите, чтобы каталог на целевом хосте у вас был на локальном хосте, иначе синхронизация может произойти сбой, и вы захотите синхронизировать вещи, которые вы пропустили при выключении. Однако, если вы знаете, что делаете, вы можете отключить синхронизацию при запуске, просто установите sync {..., startup = false} в файле конфигурации Lsyncd.

Что касается inotify, то это не количество файлов, а количество каталогов, которые поглощают ресурсы. Один каталог - это один час, независимо от того, сколько файлов он содержит.

fanotify, построенный на fsnotify как inotify, выглядел очень многообещающе для людей, наблюдающих за тоннами каталогов, но в настоящее время в Linux 2.6.37 fanotify вообще не сообщает о событиях переименования (перемещения), что делает его непригодным для такой работы :-(

axkibe
источник
Даже не как удаление с последующим созданием?
Joeforker
1
не в моих тестах, нет :-( fanotify был разработан с учетом защиты от вирусов, и ИМХО настроен прямо сейчас точно на минимум, который требуется.
axkibe
1

Я потратил 6 месяцев на поиски лучшего решения для того, что вы пытаетесь сделать; эффективное резервное копирование на NAS. После начальной синхронизации все остальное гладко, как масло. Последняя версия Lsyncd работает довольно хорошо. Я задокументировал, что я сделал, по ссылке ниже. Просто подставьте значения вашей папки. Надеюсь это поможет:

https://docs.google.com/document/d/1XpqM5h5YMwuQqzdknyDDnjcQVYGjAsyAxfYprqSnhd0/edit

Бобо
источник
0

В Азии используется новая система под названием sersync, которая вместо inotify-tool + rsync resolution http://code.google.com/p/sersync/ очень проста в использовании.


источник