Мой собственный скрипт резервного копирования 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
Нижняя Тура, Россия
На форуме: Amarok