Дата: 2010-06-10 17:06:26
Комментариев: 1
Пара несложных скриптов для ежедневного бэкапа вашего сайта и базы данных. В скриптах есть переменная KEEP, которая показывает сколько копий хранить, при превышении будут удаляться старые бэкапы.
Сами скрипты:
$cat wwwbackup.sh
#!/bin/bash
dir="/var/www/";
# what directory or file to back up
cd ${dir}
 
if [[ $? != 0 ]]; then
   echo "Error: could not cd to ${dir}. No backup was created."
   exit 1;
fi;
 
KEEP=14
 
# dir to backup
DIR=/путь/до/папки
NOW=$(date +"%Y-%m-%d")
 
  BACKUPS=`find $DIR -name "www.*.tar.gz" | wc -l | sed 's/\ //g'`
  while [ $BACKUPS -ge $KEEP ]
  do
    ls -tr1 $DIR/www.*.tar.gz | head -n 1 | xargs rm -f 
    BACKUPS=`expr $BACKUPS - 1` 
  done
 
  FILE=$DIR/www.$NOW-$(date +"%T").tar.gz
  tar -czf $FILE .
 
exit 0
 


$cat mysqlbackup.sh
#!/bin/bash
 
# user & password
USER=имяпользователя
PASS=рутпароль
 
# number of backups to be saved
KEEP=14
 
# dir to backup
DIR=/путь/до/папки
 
NOW=$(date +"%Y-%m-%d")
DBS="$(mysql -u $USER -p$PASS -Bse 'show databases')"
 
for db in $DBS
do
 
  BACKUPS=`find $DIR -name "$db.*.gz" | wc -l | sed 's/\ //g'`
  while [ $BACKUPS -ge $KEEP ]
  do
    ls -tr1 $DIR/$db.*.gz | head -n 1 | xargs rm -f 
    BACKUPS=`expr $BACKUPS - 1` 
  done
 
  FILE=$DIR/$db.$NOW-$(date +"%T").sql.gz
  mysqldump -u $USER -p$PASS $db | gzip -9 > $FILE
 
done
 
exit 0
 

Добавляем записи в cron:
$crontab -u username -e
0 3 * * * /путь/до/wwwbackup.sh >/dev/null 2>&1
0 4 * * * /путь/до/mysqlbackup.sh >/dev/null 2>&1

Теперь ежедневно в 3 и 4 ночи будут запускаться скрипты бэкапа.

Файлы:
backup.tar.gz
wwwbackup.sh
mysqlbackup.sh
теги: backup, mysql

1 комментарий

2011-10-31 22:42:35 non7top

>/dev/null 2>&1 Если бэкап перестанет работать или будет работать с ошибками (напр. не все файлы будут в бэкапе), то узнаешь об этом только в момент рестора. Весь смысл этого бэкапа теряется вместе с отправления сообщений об ошибках в /dev/null. stderr должен всегда уходить на имейл ответственного человека. exit code тоже полезно проверять.

Оставить комментарий: