Как сделать rsync быстрее?

Я использую rsync для синхронизации двух дисков (на одной машине, скажем, /dev/sdb а также /dev/sdc) файлы sqlite DB. При каждом запуске моей программы я должен запускать rsync для резервного копирования двух дисков:

$ rsync -rtv /path/to/sqlite_db/ /path/to/sqlite_db_bkup/

Каждый раз может синхронизироваться 500 ГБ sqlite файлов БД, и это займет около часа, есть ли какая-нибудь опция, которая может сделать rsync более быстрым? Или есть другие инструменты для резервного копирования такого количества файлов БД за короткое время?

1 ответ

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

Если у вас есть столбец "последний раз измененный" в каждой редактируемой вами таблице или, по крайней мере, в таблицах сильных сущностей), вы выполните SQL-экспорт всех измененных сущностей (и всех связанных таблиц) и импортировать их в (резервное копирование?) другой диск.

Иначе нет, вам придется все время создавать резервные копии файлов SQLite.

Если файлы довольно большие и показывают только небольшие изменения между двумя синхронизациями, можно успешно использовать --no-whole-file вариант.

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

Поэтому эта опция (алгоритм дельта-передачи) активирована для удаленного копирования, но не для локальной копии.

Попробуй.

Другие вопросы по тегам