Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Русификация
  COM-порт
  Монтирование образов
  dd
  burncd
  Консоль
  polling
  redirect_port
  wolf3d
  W.O.L.
  HDD->HDD
  bsdstats
  pdf в html
  monitord
  monit
  dvd в avi
  LAM
  Контроль провайдера
  pppd
  ru man
  geom_uzip
  colorize
  nettop
  немного о ssh
  установка по сети
  ClamAV mirror
  BlueTooth
  WiFi WPA
  iftop
  iPod
  2 CD -> 1 DVD
  ipcalc
  LACP и VLAN
  FFS из-под WinXP
  queues
  NFS & Win2k3
  Dynamic DNS
  ProFTPD+iconv
  deltup, xdelta, bdelta
  Приглашение csh/tcsh
  настрока bash
  Lan over Bluetooth
  pppoe
  метаданные exif
  dd : бэкапируем windows
  mozilla autoconfig
  Proxy Auto Configuration
  NNTP сервер
  Rinetd
  ISO DVD FreeBSD
  my disc1
  sftp+chroot
  SendXMPP
  APCUPSD
  Видеонаблюдение
  Настройка аудиоплеера на ximp3
  HDD(mbr) -> HDD(gpt)
  mc 4.6.2
  Динамический DNS
  axel
  LiveCD
  NAS на MPD
  backup конфигов на почту
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> backup конфигов на почту

Архивируем и храним конфиги FreeBSD

Автор: Wic.


Intro
Я думаю, у всех случались ситуации, когда домашний роутер или офисная файлопомойка по причинам старости железа или недостаточной прямоты рук уходили в оффлайн и самое быстрое, что могло их вернуть к жизни, это установка с нуля. И хорошо, когда есть backup, а если его нет? Или же есть, но после того как он был сделан, конфиги были переписаны, и снова нужно что-то допиливать. А может он находится на жестком диске, чье бездыханное тело лежит на вашем столе? Вот и у меня случилась такая ситуация, когда жесткий диск умирает, а backup старый и в мыле пришлось вспоминать все изменения и снова вносить их. По этому после восстановления работы сервера, решил сделать систему, которая будет периодически делать backup и отправлять мне его на почту.

Methods & Instruments
Архивирование
Для начала, нужно все необходимые конфиги собрать в один файл и сжать его. Для чего используется стандартная утилита tar, она упакует конфиги и сожмет их, чтобы места лишнего не занимали.
tar -cj -hP -T ./list -f /tmp/backup.tar.bzip2

То, что мы хотим сжимать указываем в файле list. Убеждаемся в отсутствие лишних переходов на новую строку в конце файла, иначе tar может пытаться их добавить в архив, что у него естественно не получится и он будет грязно ругаться. Себе я решил архивировать такой список:
/etc/
/usr/local/etc/
/usr/src/sys/amd64/conf/MYKERN
/root/

Если есть желание архивировать не всё подряд, то создаем еще один файл, в котором указываем, что не надо архивировать. Назовем этот файл notbackup. К примеру он может содержать:
*passwd
*.default

Тогда команда архивации будет выглядеть немного иначе:
tar -cj -hP -T ./list -X ./notbackup -f /tmp/backup.tar.bzip2

Шифрование
Я думаю, что никто не хочет, чтобы его конфиги путешествовали по всемирной паутине в открытом виде. Даже если они попадут в чужие руки, пусть эти руки натрут мозоли, перед тем как откроют их, если вообще откроют. Для шифрования используем opensll:
openssl enc -rc5-cbc -e -pass file:./pass \
 -in /tmp/backup.tar.bzip2 -out /tmp/bu.rar

где файл pass содержит фразу, по которой происходит шифрование. Это может быть и не фраза, а к примеру первый томик "войны и мир", конечно будет надежней. А вот при распаковке придется вновь предоставить этот томик в той же редакции, и чтобы с исходным совпадал вплоть до бита. Тут каждый ищет компромисс между надежностью и параноей.  А новое название было сделано таким для маскировки под многими любимый архиватор.

Отправка на почту
Тут нужен был простой минимум: отправить полученный файл с одного моего ящика на другой, где они и будут храниться. Хранить я их решил где-нибудь в районе mail.ru. С этим возникло больше всего проблем. Оказалось, чтобы стандартными средствами отправить почту на мой ящик, нужно настроить полноценный почтовый сервер, что на тот момент никак не входило в мои планы. Пришлось искать простую утилиту, которая сможет через smtp отправить мне зашифрованные конфиги. После прочесывания портов обнаружился простой перловский скрипт smtp-cli, который может легко отправить наш файл куда надо. Ставим его:
cd /usr/ports/mail/smtp-cli/
make install clean

Мануалов на него не было. Но зато была встроенная справка (smtp-cli --help), по которой легко пишется команда для отправки.
smtp-cli --host=smtp.ngs.ru --user=ngsmail@ngs.ru \
 --pass=MyMegaPass --from="ngsmail@ngs.ru" --subject="`date`" \
 --to=mien_archive@mail.ru --attach=/tmp/bu.rar

После всех итераций был написан финальный скрипт на отправку:
#!/bin/sh 
sleep 30
tar -cjz -hP -T /root/work/arch/list -f /tmp/backup.tar.bzip2
openssl enc -rc5-cbc -e -pass file:/root/work/arch/pass \
 -in /tmp/backup.tar.bzip2 -out /tmp/bu.rar
rm /tmp/backup.tar.bzip2
smtp-cli --host=smtp.ngs.ru --user=ngsmail@ngs.ru --pass=MyMegaPass \
 --from="ngsmail@ngs.ru" --subject="`date`" \
 --to=mien_archive@mail.ru --attach=/tmp/bu.rar
rm /tmp/bu.rar

А так же простой скрипт на распаковку, который попросит ту волшебную фразу из файла pass, а затем создаст новую папку restore и всё туда извлечет. Идеально, когда при копирование старых файлов поверх новой системы всё снова начинает работать как раньше. Сам скрипт:
#!/bin/sh 
echo "Etner pass for archive"
openssl enc -rc5-cbc -d -pass stdin -in bu.rar -out oldbackup.tar.bzip2
mkdir restore
tar -C restore -xf oldbackup.tar.bzip2
rm oldbackup.tar.bzip2


Cron или "а теперь хочу, чтобы всё работало само"
Желательно, чтобы наши конфиги без нашего ведома собирались, шифровались и шли дружным строем в хранилище. Как часто они это будут делать, каждый выбирает сам, я решил для начала поставить два раза в неделю и после перезагрузки. Вносим изменения в наш любимый крон:
echo "### Config Backup" >> /etc/crontab
echo "@reboot         root    /root/work/arch/arch.sh" >> /etc/crontab
echo "0 4 * 1-6/3 root /root/work/arch/arch.sh" >> /etc/crontab

Так же проверяем, чтобы в переменной PATH находились все необходимые пути. Переменная  PATH в моем конфиге.
PATH=/etc:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

Conclusions
После допилки нескольких косяков и багов, нехитрая система заработала.  Что мне надо на данный момент она делает.
Так же не забываем поставить соответствующие разрешения на файлы, чтобы никто кроме root'a читать/исполнять не мог.

Скрипты для архивирования конфигов и складирования их на почте.
файл скачан размер размещён примечание
scripts.zip
361 0.8kb 2011-10-09 Для самых ленивых - все файлы одним архивом.


References
ports
man tar
man openssl



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=14&t=34245.

размещено: 2011-10-09,
последнее обновление: 2011-10-22,
автор: Wic

оценить статью:

PbIXTOP, 2011-10-16 в 18:24:25

Если шифруется openssl почему не использовать асинхронное шифрование?
Тогда можно не боятся даже взлома сервера

fox, 2011-10-21 в 10:56:55

Занятно. Но помоему есть готовые решения типа bacuka или amanda…

Михаил, 2011-10-21 в 15:16:51

Могу ошибиться, но:
1. В tar нельзя использовать одновременно опции -j и -z при архивировании;
2. При указании опции -P разархивирование будет происходить в первоначальное местоположение в независимости от того, что указано в -C.

Wic, 2011-10-22 в 12:54:07

RSA шифрование не стало кушать большие файлы. Другие пока не пробовал.
Всегда есть готовое, но велосипеды вновь и вновь изобретают для собственного развития.
По тару ошибки поправил. Большое спасибо.

AGN, 2011-10-31 в 10:21:32

Сейчас (в 9.0 точно, в 8.2 не уверен) тар умеет XZ сжатие, что для бэкапа конфигов и засыла на почту будет очень кстати...
ключ -J
Я такие скриптики писал ещё на 4.9 для отправки на фтп бекапов небольших БД.


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 17 чел.
За последние 30 мин было: 83 человек
За сегодня было
145 показов,
47 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.043 секунд
Из них PHP: 25%; SQL: 75%; Число SQL-запросов: 78 шт.
Исходный размер: 122800; Сжатая: 21408