Описание
Скрипт умеет:
- Делать бекапы директорий, например, /etc.
- Делать бекапы поддиректорий (разделяя их), например, /var/www/*.
- Делать дампы MySQL.
- Делать дампы PostgreSQL.
- Загружать все это дело в Яндекс.Диск.
Подготовка
Для начала необходимо получить токен для Яндекс.Диска.
Для этого:
1. Перейдите по этому URL https://oauth.yandex.ru/client/new.
2. Название введите любое, например, “server_backup” без кавычек.
3. Права выберите пункт “Яндекс.Диск REST API” и в нем “Доступ к папке приложения на Диске”.
4. Снизу нажмите “Подставить URL для разработки”.
5. Сохраните.
Вам выдаст подобные результаты:
ID: 61bf56f1e72a4112b83e1db9e44dbe9c
Пароль: 74087cd13d2247c48661c75617916b75
Callback URL: https://oauth.yandex.ru/verification_code
- Переходим по URL https://oauth.yandex.ru/authorize?response_type=token&display=popup&client_id=%ID%
Обратите внимание. Замените в URL выше %ID% на то, что получили выше, т.е. в моем примере - “61bf56f1e72a4112b83e1db9e44dbe9c”. - Нажимаем кнопку “Разрешить”.
- Копируем полученный токен и вставляем его в скрипт в YD_TOKEN (см. ниже).
Настройка
Скачайте файл backup_yd.sh и сохраните его на сервере.
Далее, вам необходимо изменить переменные в блоке “Init variables”:
# Базовый путь для сохранения бекапов.
BASE_BACKUP_DIR="/home/user/backups"
# Токен Yandex.Disk.
YD_TOKEN=""
# Пароль от пользователя root СУБД MySQL. Если она не используется, оставьте пустым.
MYSQL_ROOT_PASSWORD=""
# Делать дампы СУБД PostgreSQL?
# Пустая строка - нет
# "1" - да
USE_POSTGRESQL=""
# Список директорий, которые необходимо бекапить.
# В данном примере будет забекаплена директория /etc как архив etc.tar.gz и
# все поддиректории /var/www с соответствующими именами.
declare -a DIRS_FOR_BACKUP=('/etc' '/var/www/*');
# Размеры чанков (т.к. максимальный размер файлов ограничен, то необходимо
# разрезать архив на несколько частей. Чанк - и есть эта часть).
SPLIT_BY="200MiB"
Также, необходимо дать права на запуск:
chmod +x ./backup_yd.sh
Проверяем
Для проверки запустим скрипт:
./backup_yd.sh
В директории %BASE_BACKUP_DIR% будет создана директория с текущей датой, в ней поддиректории для файлов и дампов баз данных.
Все файлы бекапов разрезаются на чанки.
Затем будет произведена загрузка на Яндекс.Диск и директория будет удалена.
Примечание: Чтобы собрать бекап из чанков, используйте команду cat:
cat mybackup.tgz_* > mybackup.tgz
Настраиваем ежедневные бекапы по времени
Запускаем cron:
crontab -e
Добавляем следующую строку (впишите правильный путь до файла backup_yd.sh)
0 3 * * * /bin/bash /home/user/backups/backup_yd.sh
После этого сохраняйте и выходите из редактирования cron.
Все, теперь каждый день в 3 часа ночи будет создаваться новый бекап и загружаться в ваш Яндекс.Диск.