S3.Blog

29 Апреля 2017
A A A   RSS-лента
"Я знаю, что ничего не знаю, но многие не знают и этого". Сократ [?].

Shell/Bash: Создаем Backup-архив

Дата последнего изменения: 14 Декабря 2009
Метки статьи: Готовые решения, Linux, Shell/Bash
Программистам и администраторам довольно часто приходится создавать backup'ы нужных, и порой трудно восстановимых скриптов и данных. Существует множество решений для этого. Вот моё решение, простое и лаконичное.
 

Главная задача backup - это сохранить нужные каталоги и не сохранять горы временных файлов и логов, так как благодаря им архивный файл раздувается до необъятных размеров. Ну и конечно еще хотелось бы, что б в имени файла с архивом присутствовала дата, когда этот файл был создан.

Для архивации я применю архиватор tar, у которого есть одна интересная опция:
--exclude-tag=ФАЙЛ -- исключать каталоги, содержащие ФАЙЛ, за исключением самого ФАЙЛА
благодаря этой опции надо всего лишь раскидать некий файл, например пустой скрытый .noarchive, во все каталоги, содержимое которых не надо бэкапить, а именно: временные директории, каталоги с логами и т.д.

А для получения даты, которая сохранится в имени архива, я использую метод date , с опцией: '+%d.%m.%Y'. В итоге текущая дата будет выведена в формате dd.mm.yyyy

И вот такой получится скрипт:
#!/bin/bash

# заносим в переменную DATE текущую дату 
DATE=`/bin/date '+%d.%m.%Y'`

# переходим в каталог, в котором находятся рабочие скрипты
cd /home/virtual/

# сохраняем дамп mysql
/usr/bin/mysqldump -u USER -p PASSWORD BD_NAME > ./db.sql

# архивируем все каталоги, кроме тех, в которых находится файл .noarchive 
/bin/tar -zcf PATH-TO-DIR-BACKUP/$DATE.backup.tar.gz --exclude-tag=.noarchive ./

# удаляем архивы, которым уже больше семи дней 
/usr/bin/find PATH-TO-DIR-BACKUP/ -type f -atime +7 -exec rm -f \{\} \; >/dev/null 2>&1

Осталось только в crontab настроить ежедневный запуск скрипта и вам больше не надо будет беспокоиться о вовремя не сделанном резервном хранении.


Похожие материалы:




Andrey (гость) • ответить
Это хорошо и правильно . Но надо же знать основы бакапа - всемирно известные программки mysqlbackup, fsbackup и пр.
Александрответить
известные программки - это хорошо.
но что делать, если вы хоститесь на стороннем хостинге, на котором нет такой программки и у вас нет root-доступа, что бы её установить? пару месяцев переписываться с support'ом хостера?
К тому же почти все программы такого рода изобилуют кучей настроек с regexp'ами и прочей мистической мишурой, порою очень не понятной начинающему программисту или админу
А в моем скрипте достаточно знать основы - tar, rm, date... да и то не особо нужно, так как я подробно изложил что куда и как Надеюсь, что даже ребенок разберется
Гость (гость) • ответить
Спасибо, то что нужно.

 
 
  Имя *:   Решите пример *: =
 
Полужирный Курсив Подчеркнутый Перечеркнутый
 
Вставить изображение Сделать цитатой Вставить ссылку Вставить код

Вставить смайл
 
 

 



© S3.Blog: Если критикуешь, не предлагая решения проблемы, то ты становишься частью этой проблемы.