скрипт для backup`а сайта
Не буду распинаться, почему бэкап дело важное и нужное. Кто данные уже когда-то терял, бэкапы делает ))
Хочу поделиться простеньким скриптом на bash, с помощью которого я делаю backup небольших проектов. Сохраняется папка www (httpdocs) и дамп базы mysql, присутствует ротация, количество сохраняемых копий можно настроить в переменной limit.
#!/usr/local/bin/bash # параметры вызова -путь к www -имя бд -название архива #backup.sh /home/sites/site.tld/www site_db site_backup backup_path='/home/site.tld/.backup' # папка для хранение бэкапов db_host='db.site.tld' # адрес mysql сервера db_user='site' # пользователь mysql db_pass='passsite' # пароль www_path=$1 db=$2 arch_name=$3 cd $backup_path dat=`date +%Y%m%d` # mysql /usr/local/bin/mysqldump --quick -u $db_user -p$db_pass -h $db_host $db --add-drop-table | gzip > ${arch_name}_sql${dat}.gz # сколько копий хранить limit=7 n=1 for i in `ls -t ${backup_path}/${arch_name}_sql*` do if [ $n -gt $limit ] then rm -f $i fi n=$(($n+1)) done # www-папка cd $www_path tar cf - . | gzip -9 > ${backup_path}/${arch_name}_www${dat}.tar.gz n=1 for i in `ls -t ${backup_path}/${arch_name}_www*` do if [ $n -gt $limit ] then rm -f $i fi n=$(($n+1)) done
Запуск
./backup.sh /home/site.tld/www site_db site.tld
Первый параметр - абсолютный путь к папке www;
второй - имя БД;
третий - имя архива.
На выходе получается архив папки www (site.tld_www20100831.tar.gz) и архив с дампом базы (site.tld_sql20100831.gz).
Запускаю скрипт из-под cron ежедневно в 5-6 утра, время выбираю из соображений минимума посещаемости сайта.
Ну и для того, чтобы не хранить яйца в одной корзине, ежедневно бэкапы скачиваю себе на компьютер. Для этого использую GoodSync под Windows, под *nix системами для этой цели подойдет rsync.
Оставить комментарий