Backup данных на Яндекс Диск в Linux

Простой и одновременно надежный скрипт для создания и дальнейшего хранения бэкапов на Яндекс Диске. В примере ниже скрипт ежедневно в полночь делает дамп базы MySQL и создает архив всех файлов в заданном каталоге. Переменная TIME подобрана таким образом, чтобы бэкап за предыдущий день, кроме последнего числа месяца, затирался свежей резервной копией. При желании можно хранить бэкапы за каждый день, для этого измените формат даты на +%Y-%m-%d.

Создаем файл backup.sh, копируем в него следующие строки:

#!/bin/bash
# Задаем формат даты
TIME=`date +%Y-%b`

FILES=/tmp/www.$TIME.tar.gz
MYSQL=/tmp/mysql.$TIME.sql.gz

# Создаем архив файлов
tar -czf $FS_FILE -P /www

# Создаем архив базы MySQL
mysqldump -u backup --password=password --all-databases --ignore-table=mysql.event | gzip > $MYSQL

# Загружаем данные
curl --user user@yandex.ru:password -T "{$FILES,$MYSQL}" https://webdav.yandex.ru/

# Удаляем файлы
rm $FILES $MYSQL

Создадим пользователя для бэкапа данных MySQL, назначим права для SELECT и Lock Tables:

CREATE USER 'backup'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, LOCK TABLES ON * . * TO 'backup'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Даем скрипту права на запуск:

chmod 0700 backup.sh

Добавим задание в crontab:

crontab -e
# Запускаем скрипт каждый день в полночь
0 0 * * * /home/backup.sh