Резервное копирование с CentOS сервера на Яндекс.Диск
- 18 октября, 2022
- 8:41 пп
- Нет комментариев
В данной статье я приведу пример организации простейшего резервного копирования сайтов и баз данных MySQL с сервера CentOS 6.x на Яндекс.Диск.
Прежде всего установим yandex-disk на сервер, для этого воспользуемся утилитой yum и инструкцией от Яндекса:
# nano /etc/yum.repos.d/yandex.repo
В файл yandex.repo введём такие данные:
[yandex]
name=Yandex
failovermethod=priority
baseurl=http://repo.yandex.ru/yandex-disk/rpm/stable/$basearch/
enabled=1
metadata_expire=1d
gpgcheck=1
gpgkey=http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG
Далее:
# rpm --import http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG
# yum install yandex-disk
После установки запускаем конфигурацию Яндекс.Диска:
$ yandex-disk setup
В качестве директории для синхронизации, я оставил дефолтную (/home/user/Yandex.Disk)
Создадим в ней директорию для бэкапа:
$ cd /home/user/Yandex.Disk$ mkdir backup
Нелишним будет в файле конфигурации Яндекс.Диска отключить директории отличные от backup, если вы планируете пользоваться им не только для создания резервных копий. Делается это просто, добавлением строки в файл config.cfg:
exclude-dirs="exclude/dir1,exclude/dir2,path/to/another/exclude/dir"
Теперь необходимо создать bash-скрипт, который будет в эту папку создавать backup’ы:
$ vim backup.sh
CURDATE=`date +%F`
OLDDATE=`date +%F --date='7 day ago'`
mysqldump -u mysqluser -ppassword --all-databases > /home/user/mysql-$CURDATE.sql
gzip /home/user/mysql-$CURDATE.sql
mv /home/user/mysql-$CURDATE.sql.gz /home/user/Yandex.Disk/backup
rm /home/user/Yandex.Disk/backup/mysql-$OLDDATE.sql.gz
tar czf /home/user/Yandex.Disk/backup/sites-$CURDATE.tar.gz /var/www/sites
rm /home/user/Yandex.Disk/backup/sites-$OLDDATE.tar.gz
В этом скрипте переменной CURDATE присваивается текущая дата, переменной OLDDATE дата недельной давности. Создаётся дамп базы данных, сжимается gzip’ом, и переносится в директорию Яндекс.Диска, туда же создается сжатая tar+gzip’ом копия директории с сайтами (в данном примере это /var/www/sites). Скрипт настроен таким образом, что удаляет бекапы старее 6 дней.
Далее нужно запустить синхронизацию с Яндекс.Диском:
$ yandex-disk start
Можно протестировать создание бекапов:
$ bash backup.sh
Убедитесь в наличии прав на запуск файла backup.sh
Как только резервная копия будет создана, демон Яндекс.Диска начнёт синхронизировать копию с облаком.
Если всё прошло нормально, добавим выполнение скрипта backup.sh в планировщик cron:
$ crontab -e
Внесём туда такую строку
3 5 * * * bash /home/user/backup-new.sh
При такой конфигурации скрипт будет запускаться каждый день в 5 часов 3 минуты утра. Можно скорректировать время, исходя из дневной нагрузки на сервер, выбирая промежуток времени с наименьшей нагрузкой.