Запись с тегами: rsync

Linux backup time machine на базе Python + Rsync + Mysql

в корпоративном чате:
xxx: я очень наделся, что в этом проекте не скажу этих слов, но обстоятельства заставляют.
xxx: господа.
xxx: а бэкапы кто-то делал?

Очередной велосипед для резервного копирования для систем на базе Linux, был собран из Python-а и Rsync-а, когда существующие решения оказались либо слишком сложными, либо не обладающими достаточным функционалом.
Особенности и плюсы Linux Time Machine:

  • Работа по принципу TimeMachine из MacOs, а именно — создание инкрементальных копий в отдельных папках с возможностью быстро восстановить или как-то ещё использовать файлы за произвольную дату
  • Инкрементальные копии, основанные на Hard-Link’ах, то есть в каждой папке находится «как-бы» полная копия, однако не изменившиеся файлы являются Hard-link’ами на свои предыдущие версии в папках за старые даты
  • Лёгкое прореживание инкрементальных копий, так как Hard-link’и позволят не терять сами файлы при удалении одной из их версий
  • Моментальный доступ к файлам за счёт того что они хранятся в чистом виде (в отличии от rdiff-backup и других)
  • Встроенный функционал для создания инкрементальных SQL-дампов баз данных MySql (чтобы можно было бэкапить также и mysql-таблицы в виде файлов)
  • Автоматическое возобновление резервного копирования с того места, на котором оно остановилось, если было прервано
  • Резервное копирование может быть запущено с сервера, на котором хранятся исходные данные, с сервера, на котором находятся резервные копии, а также с любого другого сервера, имеющего доступ к двум предыдущим по ssh (Прямо сейчас эта функция сломана, копировать можно либо с локального сервера, либо на локальный (на котором запускается скрипт) 🙁 )
  • Можно ограничивать частоту резервного копирования (копировать не чаще определённого), и, таким образом, оставить информацию о частоте копирования в конфигурации, не вынося её в crontab.
  • С помощью API систему можно легко и быстро расширить, например, добавить копирование на несколько серверов-хранилищ
  • Копирование как всей файловой системы так и произвольных папок
  • Возможность исключения папок, файлов и масок файлов (например *.log)
  • Возможность автоматической очистки старых копий по гибким правилам
  • Можно настроить отправку уведомлений об ошибках в систему getSentry(веб-интерфейс собирающий и отображающий информацию по ошибкам)

Есть и минусы:

  • Данные хранятся в чистом виде, без сжатия, поэтому могут занимать в несколько раз больше оригинала (в несколько — потому что копий несколько)
  • Для копирования на каждом из «концов» должен быть установлен Rsync
  • Без доступа по ssh резервное копирование работать не будет
  • Доступ по ssh работает только по ключу
  • При вычисления занятого резервными копиями места, один и тот же файл за счёт жестких ссылок учитывается по нескольку раз, так что занятое место может вычисляться неверно (однако, консольная команда du вычисляет занятое место верно)

Читать далее