Скрипт резервного копирования данных на хостинге

Настойка проста до безобразия: в переменную DB через пробел заносятся имена баз данных , резервные копии которых необходимо создать, поскольку имена баз данных у различных хостинг-провайдеров в качестве префикса имебт имя пользователя то этот самый префикс задается отдельно в переменной DB_PR.
В переменную FOLDERS заносятся имена папок, а в переменную P префикс пути(абсолютный путь к корневой папке содержащей все папки который необходимо бекапить).
В переменной BACKUP хранится абсолютный путь к папке в которую нужно складывать архивы.
В переменной LOG хранится абсолютный путь к папке в которую нужно записывать лог выполнения(backup.log).
Это новая версия - добавлена отладочная информация.

#!/bin/sh
time_start=`date +%s`
 
echo 'Config start'
# CONFIG START
#
 
 
# databases to backup
DB='db_1 db_2'
 
# db prefix
DB_PR='db_prefix_'
 
# folders to backup
FOLDERS='folder_1 folder_2'
 
# backup dir
BACKUP='/full/path/to/backup/directory/'
 
# LOG dir
LOG='/full/path/to/log/directory/'
 
# path prefix
# root folder for directories to backup
P='/full/path/to/root/directory/'
 
# Current date
DATE="$(date +%Y_%m_%d)"
 
 
dump='/usr/bin/mysqldump'
gzip='/bin/gzip'
tar='/bin/tar'
find='/usr/bin/find'
#
# CONFIG END
#
echo 'Config end'
 
 
echo 'DB start'
 
for i in ${DB};
do
echo "DB ${i} start "$(date +%s)
$dump --opt ${DB_PR}${i} > ${BACKUP}${i}_${DATE}.sql
$gzip -f ${BACKUP}${i}_${DATE}.sql
done
echo 'DB end'
 
 
echo 'Folders start'
 
for y in ${FOLDERS};
do
echo "Folders ${y} start "$(date +%s)
cd ${P}
$tar zcf ${BACKUP}${y}_${DATE}.tgz ${y}
done
 
echo 'Folders end'
 
 
echo 'Find start'
 
$find ${BACKUP} -type f -ctime +7 -exec rm -f '{}' ';'
echo 'Find end'
 
 
time_end=`date +%s`
time_elapsed=$((time_end - time_start))
echo "$DATE - Backup process were taking $time_elapsed seconds ("$(($time_elapsed/60))" minutes "$(($time_elapsed%60))" seconds)." >> $LOG/backup.log

Категории: