Як настроїти автоматичне копіювання бекапів на сторонній FTP
Використовую automysqlbackup, що складує дампи на основному сервері. Постає завдання налаштувати перенесення цих бекапів на сторонній FTP. Раніше користувався ISP Manager – там ця функція є за замовчуванням, але нещодавно відмовилася від цієї панелі. Ставити повністю нову панель типу VestaCP не вдасться, тому що сервер вже працює, а встановлення цієї панелі вимагає розпочати з чистого аркуша.
Шукаю найпростіший спосіб налаштувати перелив бекапів по крону. Крім того, FTP не нескінченний, тому старі файли повинні видалятися. В ідеалі хотілося б якесь готове та безкоштовне рішення.
Якраз нещодавно шукав подібне рішення і зупинився на backupninja.
У /etc/backup.d/ створюєте конфіги виду 10-db.mysql , 50-ftp.dup Числа на початку файлу описують черговість виконання у разі одночасного запуску (спочатку здампити базу, а потім заливати з папки з архівом на ftp ). Розширення файлу вказує на тип завдання (.mysql - бекап mysql, .dup - використовуємо duplicity)
Час виконання бекапів за замовчуванням задається в /etc/backupninja.conf
Його можна перевизначити для кожного окремого бекапу на початку його конфігу
Сам duplicity, яким я, наприклад, роблю бекапи, підтримує купу протоколів, у тому числі й передачу ftp. Також підтримує ротацію бекапів
Конфіг для duplicity виглядає приблизно так:
Тут можна трохи детальніше прочитати про них
З бекапами краще працювати найбільш утилітою duplicity, але можна і вручну їх витягнути. Вручну мінус у тому, що інкрементальні бекапи доведеться вручну накочувати на повні, коли duplicity зробить це автоматично при вказівці дати відновлення. duplicity collection-statussrcвидасть щось на кшталт цього
після чого можна прочитати вміст архіву на певну дату duplicity list-current-files --time 2017-04-17T05:00:00src(покаже бекап Mon Apr 17 01:00:03 2017, тобто найближчий до зазначеного часу) і відновити duplicity restore --time 2017-04-17T05:00:00srcdst
src- це те, де ваші бекапи зберігаються. Це може бути і локальна директорія file:///var/backups// І ftp ftp://user:password@backup_server//var/backups
Самі файли зберігаються в vol#.difftar.[tar.gzgpg], якщо треба вручну витягнути Якщо шифрували, то спочатку розшифрувати .gpg, щоб отримати .tar.gz
Дуже дякую за таку розгорнуту відповідь! Весь цей час розбирався з duplicity і backupninja. Начебто розібрався, хоча спочатку все це здавалося ну дуже заплутаним :)
Якщо я правильно зрозумів і налаштував, діє все так:
- Backupninjaщодня запускаєmysqldump, який створює бекап БД під одним і тим же ім'ям, затираючи вчорашній;
- ДаліBackupninjaзапускаєDuplicity, який зливає вміст папки з бекапами на FTP/WebDAV. При цьому саме Duplicity стежить за видаленням старі з віддаленого сховища, а також відповідає за "інкрементність" бекапів;
На жаль, в Duplicity не можна повністю відмовитися від шифрування.
Шифрування можна вимкнути, у прикладі конфіга вище є інформація
На початку завдання на бекап ставите options = --no-encryption options передає будь-які параметри запуску для duplicity
Але все одно обов'язково має бути секції [gpg] та password