Есть сервер с Ubuntu 18 на борту, цель создать максимально простой Backup всей системы.
Так как с локальной сети у нас есть свой сервак ftp, то как раз туда и будем заливать копию.
Для начала создадим учетку для создания бэкапов на ftp сервере.
И приступим непосредственно к скрипту который будет тарить все систему на ftp.
#!/bin/bash
servername='gateway'
backupname=`date +%d-%m-%Y`.tar.gz
backupnamesql=`date +%d-%m-%Y`.ALL.sql
backupobject="/"
exclude="--exclude=/dev --exclude=/var/lib/lxcfs --exclude=swap.img --exclude=/var/spool/havp --exclude=/run --exclude=/media --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/var/spool/squid"
backupdst="/mnt/backup"
logsys="/var/log/backup_sys.log"
ftpuser='ftp_user'
ftppass='ftp_password'
curlftpfs 192.168.1.112/ $backupdst -o user=$ftpuser:$ftppass #примонтируем паку на ftp сервере к себе в систему
if [ $? = 0 ]; then
echo "`date +%d_%m_%Y:%T` ::backup system was RUN ====================================================>" >> $logsys
echo $exclude >> $logsys
mysqldump -uroot -p'pass_mysql' -hlocalhost --all-databases > $backupdst/$servername/$backupnamesql #Сделаем полный дамп всех баз mysql
find $backupdst/$servername -mtime +2 -name "*.sql" -exec rm -f {} \; #Найдем и удалим все бэкапы заканчивающиеся на.sql старше 2 дней
tar -cvpzf $backupdst/$servername/$backupname $exclude $backupobject #собстевенно сам архив
find $backupdst/$servername -mtime +2 -name "*tar.gz" -exec rm -f {} \; #Найдем и удалим все бэкапы заканчивающиеся на.tar старше 2 дней
echo "SQL backup start" >> $logsys
echo "SQL backup stop" >> $logsys
echo "`date +%d_%m_%Y:%T` ::backup system was STOP ====================================================>" >> $logsys
cp $logsys $backupdst/$servername/backup_sys.log
umount $backupdst
else
echo "Error! can not mount backup share" >> $logsys
fi
Добавили на выполнение скрипт в 9 утра каждого дня.