Bash: Скрипт для бекапирования хостинга (apache mysql)
У меня это работает так. Каждое N-количество времени запускает скрипт, который архивирует tar`ом содержимое htdocs из /var/www, делает sql дампы, раскладывает это по соответствующим директориям, потом раскладывает это всё по директориям с датой.
Кому лень это писать самому - забирайте.
Запускать так:
./backup.sh директория_с_сайтами куда_копируем_бекапы пароль_от_mysql
Пароль от Mysql естественно должен быть для текущего пользователя (от чьего имени запускается скрипт).
В cron можно добавить нечто вроде этого:
- #!/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
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