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
Комментариев пока нет.