Откат для админа - это единственный способ выжить :)
Задача. Написать скрипт который будет создавать бэкап Linux сервера, в определенное место сети или на любой внешний носитель, архивировать все, в имени архива должна быть дата. Скрипт должен проверять и удалять старые архивы.
Я решил делать бэкап по сети на внешнюю шару. Как примонтировать шару расскажу позже.
Начнем
1. Заходим на сервер под рутом
2. Делаем файлик mcedit /opt/backup.sh
3. Пишем следующее
#!/bin/bash
# задаем переменную, путь к каталогу
backup_dir=/mnt/backup/srv1
#проверяем примонтирован ли /mnt/backup/srv1
#если нет, монтируем и еще раз проверяем
#если нет тогда отбой :(
mnt=`mount|grep -c /mnt/backup/srv1`
if [ $mnt == 0 ]; then
mount /mnt/backup/srv1
mnt=`mount|grep -c /mnt/backup/srv1`
if [ $mnt == 0 ]; then
exit
fi
fi
#задаем переменную с форматом даты
cur_date=`date +%Y-%m-%d_%H%M%S`
#переходим в директорию с бэкапом
cd $backup_dir
#ищем все файлы у которых было изменение старше 20 дней и удаляем их :)
# -ctime это дата изменения, +20 кол-во дней
find -ctime +20 type f -delete
#дампим базу mysql
#Если без данных то так
/usr/bin/mysqldump -uroot -p12345 --no-data mydb | gzip > mysql_no-data$cur_date.gz
#Если c данными то так
/usr/bin/mysqldump --opt mysql -uroot -p12345 mydb | gzip > mysql_$cur_date.gz
#делаем архив всего чего нужно
tar -cjf server_$cur_date.tar.bz2 /etc /opt /srv /var/spool/cron /var/www /var/opt
Задача. Написать скрипт который будет создавать бэкап Linux сервера, в определенное место сети или на любой внешний носитель, архивировать все, в имени архива должна быть дата. Скрипт должен проверять и удалять старые архивы.
Я решил делать бэкап по сети на внешнюю шару. Как примонтировать шару расскажу позже.
Начнем
1. Заходим на сервер под рутом
2. Делаем файлик mcedit /opt/backup.sh
3. Пишем следующее
#!/bin/bash
# задаем переменную, путь к каталогу
backup_dir=/mnt/backup/srv1
#проверяем примонтирован ли /mnt/backup/srv1
#если нет, монтируем и еще раз проверяем
#если нет тогда отбой :(
mnt=`mount|grep -c /mnt/backup/srv1`
if [ $mnt == 0 ]; then
mount /mnt/backup/srv1
mnt=`mount|grep -c /mnt/backup/srv1`
if [ $mnt == 0 ]; then
exit
fi
fi
#задаем переменную с форматом даты
cur_date=`date +%Y-%m-%d_%H%M%S`
#переходим в директорию с бэкапом
cd $backup_dir
#ищем все файлы у которых было изменение старше 20 дней и удаляем их :)
# -ctime это дата изменения, +20 кол-во дней
find -ctime +20 type f -delete
#дампим базу mysql
#Если без данных то так
/usr/bin/mysqldump -uroot -p12345 --no-data mydb | gzip > mysql_no-data$cur_date.gz
#Если c данными то так
/usr/bin/mysqldump --opt mysql -uroot -p12345 mydb | gzip > mysql_$cur_date.gz
#делаем архив всего чего нужно
tar -cjf server_$cur_date.tar.bz2 /etc /opt /srv /var/spool/cron /var/www /var/opt
4. Делаем файлик исполняемым
chmod +x backup.sh
5. добавляем его в cron
crontab -e !!! ВНИМАНИЕ !!! случайно не наберите crontab -r удалите все что было в cron-е
# Запускать backup сервера, каждый день в 22:01
01 22 * * * /opt/backup.sh >/dev/null 2>/dev/null
Готово.
Теперь наш сервер будет делать бэкап каждый день в 22:01
А как восстановить бэкап базы?
А вот так:
gunzip < /mnt/backup/srv1/mysql_2014-10-21_000101.gz | mysql -u root -p mydb
А как восстановить бэкап базы?
А вот так:
gunzip < /mnt/backup/srv1/mysql_2014-10-21_000101.gz | mysql -u root -p mydb
Комментариев нет:
Отправить комментарий