
скрипт бэкапа
Я столкнулся с такой проблемой, нужно забекапить конфиги, важные файлы, MySQL базу данных. Я использую FreeBSD, поискав в интернете инфу, нашел много решений, один из них — написание простого скрипта на баше или на перле.
backups.sh написанный на bash-е:
# ----------------------------------- # Created Ohalnikov Oleg # скрипт бэкапа # ----------------------------------- #!/bin/sh DIR=/mnt/backup DATA=`date '+%Y%m%d'` cd $DIR mysqldump -u root --password='*****' -l --all-databases | gzip > databases-$DATA.sql.gz tar -czf named-$DATA.tar.gz /var/named sync tar -czf log-$DATA.tar.gz /var/log sync tar -czf etc-$DATA.tar.gz /etc sync tar -czf locetc-$DATA.tar.gz /usr/local/etc sync tar -czf www-$DATA.tar.gz /usr/local/www sync for file in *-$DATA.* do echo "$file" >> $DIR/current done echo "Backup Server $DATA" | mail -s "Backup Server $DATA" nvs@8.to < $DIR/current rm -f $DIR/current find $DIR/* -mtime +7 -exec rm {} \; # <<< THE-END >>>
Все длинные команды mysqldump и mail должны быть написаны в одну строку. DIR — директория с бэкапами. DATA — текущая дата в формате год/мес.день. Далее скрипт идет в папку с backup-ами и начинает дампить БД:
mysqldump ключ —all-databass , -l — лочит базы на время выполнения дампа, —password=’Ваш_пароль_от_БД‘. После чего все данные перенаправляються в файл и архивируються databases-$DATA.sql.gz. Храним бекап 7 дней:
# find $DIR/* -mtime +7 -exec rm {} \;
Что бынезапускать постоянноэтот скрипт, удобнопрописать его в кроне и назначитьвыполнение подате (каждыйдень в 00.05 например):
# crontab -e:
SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin MAILTO= nvs@8.to
Этот скрипт будет работать на любом другом Unix\Linux но нужно быть внимательным к директориям которые Вы бэкапите, они могут отличаться названием!
ВСЕ! Скрипт бэкапа создан.