Мощь и потенциал операционной системы Linux проявляется, когда ты ставишь себе достаточно сложное задание, за час-два пишешь скрипт для его реализации, запускаешь, отлаживаешь, запускаешь и все работает, годами, без глюков и подвисаний… И никакого коммерческого программного обеспечения.
Исходные данные
Имеется установленная операционная система Linux, система управления базами данных mysql, в которой работает база данных infotech, пользователь базы данных — inuser, пароль — qwerty (для примера). Задача — написать скрипт для резервного копирования базы данных с последующим архивированием архиватором tar. Срок хранения архивов баз -не более 30 дней. Резервирование выполнять по понедельникам, средам, пятницам и воскресеньям в 1.00.
Реализация
Создаем папку для хранения архивов:
#mkdir -p /backup/infotech
Пишем скрипт для поставленной задачи (bash):
#!/bin/bash
# Путь к папке с архивами
backup_dir="/backup/infotech"
#Шаблон для создаваемого архива с датой создания архива
backup_filename=infotech-`date +%Y-%m-%d`
#Полное имя архива
archive_filename=$backup_filename.tar.gz
#Срок хранения архивов
Backup_days=30
#Создаем дамп базы данных, используя пользователя с полными правами на базу данных
#(inuser для данного примера)
mysqldump -u iuser -pqwerty infotech > $backup_dir/$backup_filename.sql
#Архивируем созданный дамп
tar -C $backup_dir -czf $backup_dir/$archive_filename $backup_dir/$backup_filename.sql
#Удаляем дамп базы
rm $backup_dir/$backup_filename.sql
#Находим и удаляем все архивы сроком создания более 30 дней
find $backup_dir/infotech-* -mtime +$Backup_days -exec rm -v {} \;
Добавляем задачу в cron:
#crontab -e
0 1 * * 0,1,3,5 /путь_к_файлу_скрипта
В разрешениях не забудьте выставить выполнение для пользователя root.
20 мая, 2013