Как настроить автоматическое копирование бэкапов на сторонний FTP?

Использую automysqlbackup, который складирует дампы на основном сервере. Стоит задача настроить перенос этих бэкапов на сторонний FTP. Раньше пользовался ISP Manager - там эта функция есть по умолчанию, но недавно отказался от этой панели. Ставить целиком новую панель типа VestaCP не получится, потому что сервер уже работает, а установка этой панели требует начать с чистого листа.

Ищу самый простой способ настроить перелив бэкапов по крону. Кроме того FTP не бесконечный, потому старые файлы должны удаляться. В идеале хотелось бы какое-нибудь готовое и бесплатное решение.
  • Вопрос задан
  • 2136 просмотров
Решения вопроса 1
Inlore
@Inlore
Как раз недавно искал подобное решение и остановился на backupninja
Умеет по расписанию бэкапить БД и файлы и отправлять их на сторонний сервер разными способами, включая rsync, rdiff, duplicity

В /etc/backup.d/ создаёте конфиги вида 10-db.mysql , 50-ftp.dup
Числа в начале файла описывают очерёдность выполнения в случае одновременного запуска (сначала сдампить базу, а затем заливать из папки с архивом на ftp).
Расширение файла указывает на тип задачи (.mysql - бэкап mysql, .dup - используем duplicity)

Время выполнение бэкапов по-умолчанию задаётся в /etc/backupninja.conf
...
when = everyday at 01:00
...

Его можно переопределить для каждого отдельного бэкапа в начале его конфига
when = sundays at 02:00
when = 30th at 22
when = 30 at 22:00
when = everyday at 01            <-- the default
when = Tuesday at 05:00
when = hourly

Подробнее о конфигах backupninja здесь

Сам duplicity, которым я, например, делаю бэкапы, поддерживает кучу протоколов, в том числе и передачу по ftp. Также поддерживает ротацию бэкапов

Конфиг для duplicity выглядит примерно так:
## Переопределяем время выполнения
when = sundays at 02:00
## Параметры, передаваемые напрямую duplicity при запуске бэкапа
## --no-encryption позволяет отключить шифрование архивов с бэкапом и получить обычный .tar.gz
#options = --no-encryption

testconnect = no
tmpdir = /tmp

[source]
include = /var/backups/mysql
include = /home/user/projects/site1
exclude = /home/user/projects/.git

[gpg]
## Ключ для симметричного шифрования. Duplicity шифрует бэкапы с помощью gpg. Должен быть указан, даже если стоит --no-encryption, хоть и не будет использоваться
password = 123

[dest]
## perform incremental backups
incremental = yes

## days of incremental backups before doing full backup again
increments = 7

## how many days of data to keep
keep = 14

## for how many full backups do we keep their later increments
keepincroffulls = all

desturl = ftp://backup_user@your_backup_server/
ftp_password = backup_user_password


В бэкапах получаются на первый взгляд не очень понятные файлы, типа
duplicity-full-signatures.20130510T160711Z.sigtar.gpg
duplicity-full.20130510T160711Z.manifest.gpg
duplicity-full.20130510T160711Z.vol1.difftar.gpg

Тут можно чуть поподробнее прочитать про них

С бэкапами лучше работать самой утилитой duplicity, но можно и вручную их вытащить. Вручную минус в том, что инкрементальные бэкапы придётся вручную накатывать на полные, когда duplicity сделает это автоматом при указании даты восстановления.
duplicity collection-status src выдаст что-то типа этого
Total number of contained volumes: 3
Type of backup set:                        Time:                        Num volumes:
Full                            Mon Apr 17 00:24:46 2017                 1
Incremental                     Mon Apr 17 01:00:03 2017                 1
Incremental                     Mon Apr 17 09:53:38 2017                 1

после чего можно прочитать содержимое архива на определённую дату
duplicity list-current-files --time 2017-04-17T05:00:00 src (покажет бэкап Mon Apr 17 01:00:03 2017, т.е. ближайший ДО указанного времени)
и восстановить
duplicity restore --time 2017-04-17T05:00:00 src dst

src - это то, где ваши бэкапы хранятся.
Это может быть и локальная директория file:///var/backups//
И ftp ftp://user:password@backup_server//var/backups

Сами файлы хранятся в vol#.difftar.[tar.gz|gpg], если надо вручную вытащить
Если шифровали, то сначала расшифровать .gpg, чтобы получить .tar.gz
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы