Bash: Скрипт для бекапирования хостинга (apache+mysql)

У меня это работает так. Каждое N-количество времени запускает скрипт, который архивирует tar`ом содержимое htdocs из /var/www, делает sql дампы, раскладывает это по соответствующим директориям, потом раскладывает это всё по директориям с датой.
Кому лень это писать самому – забирайте.

#!/bin/bash
 
dir=$1
date=`date \+\%d-%m-%y`
d_dir=$2/$date
sql_pass=$3
 
mkdir -p $d_dir/files
mkdir -p $d_dir/sql
 
echo "${date}: Начало процесса полного бекапа.
---------------------------------------------------
" >> /var/log/backup.log
 
for i in $(ls -1 $dir);
do
        file=$i.tar
        tar -cvf /tmp/$file $dir/$i/htdocs/* &&
        mv /tmp/$file $d_dir/files/$file &&
        echo "Архив с сайтом ${i} записан" >> /var/log/backup.log
done
 
dbs=$(mysql -uroot -p$sql_pass -e "show databases;" | grep [:alnum:])
 
for i in $dbs;
do
        if [ "$i" == "Database" ] || [ "$i" == "information_schema" ] || [ "$i" == "mysql" ]
        then
                continue
        fi
 
        file=$i.sql
        mysqldump -uroot -p$sql_pass $i > /tmp/$file &&
        mv /tmp/$file $d_dir/sql/$file &&
        echo "SQL-файл ${i} записан" >> /var/log/backup.log
done
 
echo "--------------------------------
backup завершён" >> /var/log/backup.log

Запускать так:
./backup.sh директория_с_сайтами куда_копируем_бекапы пароль_от_mysql

Пароль от Mysql естественно должен быть для текущего пользователя (от чьего имени запускается скрипт).

В cron можно добавить нечто вроде этого:

0 6 * * * backup.sh /var/www /mnt/net_disk secret_password

Почти забыл. В итоге мы будем иметь вот что:

site sb0y # ls -R /mnt/net/smb_bkp/
/mnt/net/smb_bkp/:
06-05-10  07-05-10
 
/mnt/net/smb_bkp/06-05-10:
files  sql
 
/mnt/net/smb_bkp/06-05-10/files:
for_1c.zip     localhost.zip  new_kardos.ru.zip  zif1W5dm
kardos.ru.zip  magazine.zip   workground.zip
 
/mnt/net/smb_bkp/06-05-10/sql:
kardos_ru_new.sql  kardos_ru.sql  magazineBeta.sql  magazine.sql
 
/mnt/net/smb_bkp/07-05-10:
files  sql
 
/mnt/net/smb_bkp/07-05-10/files:
for_1c.zip     localhost.zip  new_kardos.ru.zip
kardos.ru.zip  magazine.zip   workground.zip
 
/mnt/net/smb_bkp/07-05-10/sql:
kardos_ru_new.sql  kardos_ru.sql  magazineBeta.sql  magazine.sql
  • Трэкбеки закрыты
  • Комментарии (0)
  1. Комментариев пока нет.



Введите код с картинки