Настойка проста до безобразия: в переменную 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
- Для комментирования войдите или зарегистрируйтесь
