Резервное копирование сайта

Опубликовано beregov.a.e - чт, 09/28/2017 - 18:00

  С моей точки зрения, располагать сайт нужно в директории пользователя, от имени которого будет работать сайт. И чтоб этот пользователь имел минимум прав. Для примера рассмотрим расположение сайта в директории пользователя wwwuser сайта exempel.ru.

  Если используете сервер баз данных postgresql то необходимо настроить, чтобы пароль от базы считывался из файла. Для этого в директории пользователя необходимо создать файл .pgpass с правами 600 и следующего содержания сервер:порт:база_данных:имя_пользователя:пароль.

Для резервного копирования директории сайта и базы данных сайта вот такой скрипт: 

cat /home/wwwuser/bin/backup_sites.sh
#!/usr/local/bin/bash
#####
#####
login_db='user_db' # логин для подключения к базе
host_db='127.0.0.1' # ip адрес расположения сервера баз данных
password_db='db_password' # пароль к базе данных
db='database' # имя базы данных
site=exsempel.ru #название сайта
date_format=`date +%Y-%m-%d` # текущая дата в нужном формате
backup_dir=/home/wwwuser/www/backup # директория куда складывать архивы
backup_file=${backup_dir}/${date_format}_${site}.tar.xz #имя архива
files_site=/usr/home/wwwuser/www/unixskills.ru/ # путь к файлам сайта
sql_dump=${files_site}${site}.sql # путь к дампу базы данных
#####
#####
echo "делается дамп базы сайта ${site}"
#создание дампа базы средствами postgresql
pg_dump -h ${host_db} -d ${db} -U ${login_db} -w > ${sql_dump} # создание дампа базы средствами postgresql
#создание дампа базы средствами mysql
#mysqldump -h ${host_db} -u${login_db} -p${password_db} > ${sql_dump} # создание дампа базы средствами mysql
echo "начат процесс архивации сайта ${site}"
time tar cf - ${files_site} | xz -9 > ${backup_file} # архивация директории сайта архиватором xz. Можно использовать gzip
echo "удаление дампа базы сайта ${site} из дириктории сайта"
rm ${sql_dump}
echo "архив готов ${backup_file}"
ls -lh ${backup_file} # получение списка архивов
mass1=`for  (( i=0; i<=31 ; i++ )) ; do date -v-${i}d +%Y-%m-%d ; done` # создаём массив дат

# для linux

# mass1=`for  (( i=0; i<=31 ; i++ )) ; do date -d "-${i} day" +%Y-%m-%d ; done` # создаём массив дат
mass2=`echo ${mass1} | sed 's![ \t]!\\\|!g'` #экринируем значения в массиве
echo "Удаление старых архивов"
del_old_backup=`ls ${backup_dir}/* | grep -v ${mass2}` # строим список архивов, которые будем удалять
for j in ${del_old_backup[@]}; do rm -f $j; done # удаляем устаревшие архивы.

Разрешаем выполнение скрипта

chmod +x /home/wwwuser/bin/backup_sites.sh

После чего добавляем задание в cron на выполнение скрипта. 

#crontab -e

00      23      *       *       * /home/wwwuser/bin/backup_sites.sh # каждый день 23:00 запуск задания.

Теги