Мне потребовалось автоматическое резервное копирование базы данных из СУБД MySql, Решено было написать простой скриптик, который можно скормить cron, чтобы он запускался в заданное время.
Собственно сам скрипт:
#!/bin/sh
# MySQL backup script
# Copyright © 2009 Vass
# This script is licensed under GNU GPL version 2.0 or above, see http://www.gnu.org/licenses/
# current time
NOW=$(date +"%Y%m%d%k%M%S")
# backup owner
USER="vpupkin"
GROUP="vpupkin"
# mysql auth
MUSER="user"
MPASS="password"
MDB="databasename"
MHOST="localhost"
# mysqldump path
MYSQLDUMP="$(which mysqldump)"
# bzip2 path
BZIP2="$(which bzip2)"
# chmod path
CHMOD="$(which chmod)"
# chmod path
CHOWN="$(which chown)"
# find path
FIND="$(which find)"
# rm path
RM="$(which rm)"
# backup destination path
BACKUP="/var/www/backup"
# backup lifetime in days
LIFETIME=7
# backup filename
FILE=$BACKUP/$MDB.sql.$NOW.bz2
# file permission
PERMISSION="700"
# create backup
$MYSQLDUMP -u$MUSER -h$MHOST -p$MPASS $MDB | $BZIP2 -c > $FILE
sleep 10
$CHMOD $PERMISSION $FILE
$CHOWN $USER:$GROUP $FILE
#deleting old backup files
$FIND $BACKUP -mtime +$LIFETIME -exec $RM {} \;
Переменная
NOW содержит в себе текущую дату-время, добавляется к имени файла чтобы обеспечить его уникальность;
переменная
BACKUP это путь к папке, куда будут сохранятся резервные файлы;
LIFETIME — время жизни файла в днях, backup'ы старее чем
LIFETIME будут удалятся;
Файл дампа создается с помощью поставляемой с MySql сервером утилиты
mysqldump, после чего сжимается архиватором
bzip2, т. е. необходимо его наличие в системе;
После создания файла его хозяином назначается
USER, а права устанавливаются в
PERMISSION;
В самом конце удаляются все устаревшие файлы.
Установка скрипта:
Необходимо скопировать скрипт в одну из папок /etc/cron.* в зависимости от того, как часто вы хотите его выполнять.
После чего следует назначить скрипту права разрешающие выполнение:
chmod 755 [filename]
Все, скрипт готов к работе, перезапускать cron не требуется.
Комментарии (3)
RSS свернуть / развернутьnemOn
Vass
nemOn
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.