BlackWarrior

 
<<< Back

Резервное копирование MajorDoMo на Яндекс.Диск

Мой собственный скрипт резервного копирования MajorDoMo на Яндекс.Диск

Да, я знаю, что есть модуль выполнящий эти же функции, но этот скрипт я использую уже более двух лет. Настало время делиться)

Подготовка

Все действия будем выполнять от имени root, потому sudo -i и погнали!

apt install davfs2 -y
mkdir /mnt/yandex.disk
echo /mnt/yandex.disk ЯндексЛогин ЯндексПароль > /etc/davfs2/secrets

Настройка

Предполагаем, что Алиса у нас установлена в /var/www/, поэтому создаем там сам скрипт:

nano /var/www/mjdbackup.sh

и вписываем туда следующее:

#!/bin/bash
## Config
ARFILENAME=majordomo
DBNAME=db_terminal
CHARSET=utf8
HOST=localhost
USER=ИМЯ        #имя пользователя имеющего доступ к базе данных (можно подсмотреть в config.php)
PASS=ПАРОЛЬ  #пароль пользователя имеющего доступ к базе данных (можно подсмотреть в config.php)
TMPDIR=/mnt/backup
SRCFILES=/var/www/
EXCLUDE1=/var/www/backup/*
EXCLUDE2=/var/www/cms/debmes/*
EXCLUDE3=/var/www/cms/saverestore/*
EXCLUDE4=/var/www/dead.letters
YANDEXDISK=/mnt/yandex.disk
DELETEOLDERTHEN=30   #удалять на Яндекс.Диске файлы старше чем указанное значение дней

## Backup
echo "[---------] Starting backup"
# create temp dir
mkdir $TMPDIR 2> /dev/null
#MySQL dump
echo "[#--------] Creating MySQL dump"
mysqldump --user=$USER --host=$HOST --password=$PASS --default-character-set=$CHARSET $DBNAME > $TMPDIR/$DBNAME.sql
#MySQL dump compress
echo "[##-------] Compressing MySQL dump"
tar -czf $TMPDIR/$DBNAME-`date +%F_%H-%M`.tar.gz --directory=$TMPDIR $DBNAME.sql
#Src dump
echo "[###------] Compressing MajorDoMo files"
tar -czf $TMPDIR/$ARFILENAME-`date +%F_%H-%M`.tar.gz --exclude=$EXCLUDE1 --exclude=$EXCLUDE2 --exclude=$EXCLUDE3 --exclude=$EXCLUDE4 $SRCFILES 2> /dev/null

## Work with cloud
# mount YandexDisk
echo "[####-----] Mounting Yandex Disk"
mkdir $YANDEXDISK 2> /dev/null
mount -t davfs https://webdav.yandex.ru $YANDEXDISK
mkdir $YANDEXDISK/$ARFILENAME 2> /dev/null
# copy backups to YandexDisk
echo "[#####----] Copying backups to Yandex Disk"
cp $TMPDIR/$DBNAME-*.tar.gz $YANDEXDISK/$ARFILENAME
cp $TMPDIR/$ARFILENAME-*.tar.gz $YANDEXDISK/$ARFILENAME
# delete backups from hdd
echo "[######---] Deleting backups from HDD"
rm -f $TMPDIR/$DBNAME.sql
rm -f $TMPDIR/$DBNAME-*.tar.gz
rm -f $TMPDIR/$ARFILENAME-*.tar.gz
# delete old backups from YandexDisk
echo "[#######--] Deleting old backups from Yandex Disk"
find $YANDEXDISK/$ARFILENAME -type f -mtime +$DELETEOLDERTHEN -exec rm -f {} \;
# unmount YandexDisk
echo "[########-] Unmounting Yandex Disk"
umount -l $YANDEXDISK > /dev/null
# backup complete
echo "[#########] Backup complete!"

Делаем наш файл исполняемым:

chmod ugo+x /var/www/mjdbackup.sh

Осталось внести наш скрипт в crontab. Пишем crontab -e и вставляем туда эту строчку:

0 4 * * * /var/www/mjdbackup.sh

Discuss (2) (8)

See also:
2020-02-18 Вновь про PING
2019-10-14 TORифицируем Алису
2019-10-11 И вновь о прокси
2019-09-16 Подключение погодных станций WS1080 к MajorDoMo Linux
2019-09-15 Учим Mikrotik перезагружать USB-модем
2019-04-19 Узнаем свои интернет-данные

Нижняя Тура, Россия

На форуме: Amarok