2013-09-07

Бекапы на Yandex.Disk

Как говорится, люди делятся на тех, кто не делает бекапы и тех, кто уже делает.
Давно хотел настроить резервирование в облачное хранилище у себя на сервере, но не было времени разбираться с монтированием webdav.
Недавно вышел консольный клиент под Linux Yandex.Disk, оживился Redmine у меня сервере и я начал решать проблему с сохранностью важных данных Redmine, а потом уж по аналогии и все остальное можно будет резервировать.

На официальном сайте размещена инструкция по установке и настройке http://help.yandex.ru/disk/cli-clients.xml.
Благо под Ubuntu есть дистрибутив и устанавливается и настраивается все очень просто. В итоге задача сводится к тому, чтобы просто копировать архивы в папку для бекапов в Yandex.Disk и удалять старые.
Простой скрипт на bash будем запускать раз в сутки ночью с помощью cron:
#!/bin/sh
backups_src=/home/yasla/backups
backups_dest=/home/yasla/Yandex.Disk/backups
project=redmine
project_src=$backups_src/$project
project_dest=$backups_dest/$project
# создаем папку для бекапов при необходимости
if [ ! -d "$project_dest" ]
then
    mkdir -p $project_dest
fi
# дамп базы
mysqldump -uDB_USER -pDB_PASSWORD DB_NAME > $project_src/redmine.sql
# архивируем только пользовательские загруженные файлы и дамп базы
tar -czf $project_src/redmine.tgz /path_to_redmine/files $project_src/redmine.sql
# удаляем с яндекс-диска все бекапы кроме 7-ми последних
cd $project_dest && ls -t | tail -n+8 | xargs -I{} rm {}
# копируем архив с файлами в папку яндекс-диска для последующей автоматической синхронизации
cp $project_src/redmine.tgz $project_dest/redmine.`date +'%Y%m%d%H%M%S'`.tgz