Запомняне

» Здравейте
[ Вход :: Регистриране ]
 » Начало » Li Форуми » Li Статии » Полезно » Автоматизиран бекъп с rsnapshot и ssh
  • Страница 1 от 1 Skip to Page:
  • 1
Тема: Автоматизиран бекъп с rsnapshot и ssh
Мнение #1
Написано на: Ноември 08 2007, 15:58
zeridon
 

No avatar chosen




Група: Li fans
Мнения: 4
Регистриран: Септември 2007

Оценка: няма

Offline
Автор: Владимир Витков
Оригинал: http://www.getoto.net/2007/11/backup-with-rsnapshot-and-ssh/pref/bg/
Лиценз: Creative Commons BY-SA 3.0

Disclaimer: Описаните техники в този документ могат да ви помогнат но не е задължително да са напълно вярни и изчерпателни. Не поемам отговорност за каквито и да било реални или нереални, вреди, ползи, пропуски, паднали къщи или каквото и да е произтичащи от ползването или неползването на този документ.

История

  • 08.11.2007 - Първа версия


Мотивация
По темата за архивирането на данни има няколко мнения и всички те са вярни в определена степен и светлина. Най често споменаваните са:

  • Архивирайте често и редовно

  • Архивирайте когато е нужно и имайте свестен план за възстановяване

  • Real men don't do backups! They let the internet mirror it!


Е за радост или съжаление аз съм от хората които са по първият начин. Държа данните ми да са на сигурно място. И за целта трябва да имам стратегия. Днес ще ви разкажа как този сайт се архивира. Какво се използва и как е навързано.
Трябва да се отбележи че системата не е от най-добрите но е достатъчно добра че да работи и да не ми създава проблеми.

Цел
Целта ни днес е да реализираме напълно автоматизирана система за архивиране на данните. Допълнителни цели са скорост, минимален обем на прехвърляните данни, лесно възстановяване на данните от архива, сигурност.

Съставките
Като цяло нищо странно или екзотично. Дебиан базирана система (и хостът и машината която архивира), rsnapshot, ssh, rsync, diff, cp, du, perl.
Основата на системата се върти около rsync, rsnapshot е обвивка която предлага доста възможности но всичко е постижимо с нормален rsync. Допълнително са ни необходими cron и известно количество познания за начина на работа и методите за сигурност около SSH.
Най-голямо внимание трябва да се обърне на подсигуряването на системата, тоест настройката на ssh

Настройване на rsnapshot
Това като цяло е най-лесната част от цялото занимание. Избрал съм rsnapshot поради факта че информацията се предава посредством rsync тоест само разликите, използва схема за ротиране на архивните копия и може би едно от най-важните неща - използва твърди връзки между непроменените файлове от различните стартове на архивирането и по този начин пести място.
След инсталацията му трябва да се редактира конфигурационният му файл в който трябва да се дефинират времеви периоди (не са точно времеви, но за това след малко), точки за архивиране и някои команди.

/etc/rsnapshot.conf
# дефинираме къде ще съхраняваме архивите
snapshot_root   /home/webbackup/
# дефиниране на някои команди които ще са ни необходими
cmd_cp          /bin/cp
cmd_rm          /bin/rm
cmd_rsync       /usr/bin/rsync
# за съжаление тук не могат да се добавят допълнителни опции
cmd_ssh         /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du          /usr/bin/du
cmd_rsnapshot_diff      /usr/bin/rsnapshot-diff
# дефинираме си период (по-точно име и брой архиви)
interval        whgeto  10
# малко логове и т.н.
verbose         2
loglevel        3
logfile         /var/log/rsnapshot.log
lockfile        /var/run/rsnapshot.pid
# някои от данните не искаме да ги синхронизираме
exclude log/*
exclude phptmp/*
# и най накрая точките които ще архивираме
backup  root@getoto.net:/var/www/       getoto.net/web/
backup  root@getoto.net:/var/lib/mysql/ getoto.net/sql/


След като вече сме дефинирали какво и как да архивираме е време да си настроим периодична задачка която реално извършва архивирането. Това се постига чрез добавяне на запис в системата на cron.
0 */6   * * *   webbackup    /usr/bin/rsnapshot whgeto
Това се превежда като ... на всеки 6 часа изпълнявай като потребител webbackup командата ...

С това настройката на rsnapshot завършва. Но сега следва да си подсигурим достъпа до машината и да го ограничим до използването само на строго определени команди.

Настройване на SSH
След като системата ни е настроена да извършва регулярно архивиране на нашите данни е време да подсигурим достъпа. Искаме да получим следната ситуация. Вход без парола (с ключ), възможен само от определен адрес, който да може да изпълнява само строго определени команди.

Цялото това нещо се постига по следният начин:

  • Генериране на ключ който ще се използва за операциите - самият ключ е без парола. Избираме ключа да не е особенно голям за да пестим време, а и освен това ще е бъде доста ограничен.
    ssh-keygen -t rsa -b 1024 -f ~/keys/backup && chmod 600 ~/keys/backup
    По този начин в папка ~/keys ще си генерираме РСА ключ с големина 1024 байта и ще променим правата му така че само ние да можем да го четем и променяме. Последната стъпка е много важна тъй като ако правата не са коректни ключа няма да бъде използван.

  • Добавяме публичната част от ключа в списъка с упълномощените ключове на машината която ще архивираме. Напълно достатъчно е публичната част от ключа да бъде копирана във файла /root/.ssh/authorized_keys

  • Влизаме един път със този ключ в целевият сървър (машина която ще архивираме). Целта на това е ръчно да приемем подписа на целевата машина като валиден. Ако тази стъпка се пропусне цялата операция по архивирането ще пропадне.

  • Редактираме файлът ~/.ssh/config - това е файл в който могат да се конфигурират множество аспекти на поведението на клиенат ssh на базата на това с кой хост се опитваме да се свържем. В моят случай файлът е със следното съдържание:
    # За кой хост говорим
    Host getoto.net
    # ще използваме само IPv4 (v6 не поддържаме)
    AddressFamily inet
    # ще използваме пакетен режим (неинтерактивен)
    BatchMode yes
    # ще използваме този файл за ключ
    IdentityFile /home/webbackup/keys/backup
    # и изискваме задължително версия 2
    Protocol 2


    По този начин принуждаваме ssh клиента да използва нашият ключ (специално създаден) когато се свързва към машината.
    С това приключва конфигурацията на хоста който извършва архивирането.

  • Редактиране на файлът /root/.ssh/authorized_keys - тук се извършва ограничаването на възможностите на нашият ключ. В този файл ще ограничим ключът ни за архивиране да може да се използва от едно място и да може да изпълнява само определени команди.
    /root/.ssh/authorized_keys
    command="/root/.ssh/authprogs.pl",from="11.22.33.44" ssh-rsa AAAAB3NzaC1 ...
    По този начин ограничаваме ключът да може да се използва само от машина с адрес 11.22.33.44 и единствената команда която може да изпълни (без да може да изпълни нещо друго) е /root/.ssh/authprogs.pl

    Програмата authprogs.pl е скрипт взет от http://www.hackinglinuxexposed.com/. Неговата цел е да предостави възможност за изпълняване на няколко различни команди. Причината е че чрез възможностите на ssh можем да зададем само една задължителна команда.
    Самият срипт има нужда от прост конфигурационен файл
    # хост
    [11.22.33.44]
    # команди които може да изпълнява
           # Backups
           rsync --server --sender -logDtprR --numeric-ids . /var/www
           rsync --server --sender -logDtprR --numeric-ids . /var/lib/mysql

    По този начин ефективно прескочихме ограниченията на ssh

  • Тестване - пуснете ръчно rsnapshot с интервала който сме си дефинирали. Ще повиси малко и в последствие ще имате вече архиви в точката която сте дефинирали като архивна.
    garota:~# ls -l /home/webbackup/
    drwxr-xr-x 3 1005 1005 4096 2007-11-08 12:00 whgeto.0
    drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:39 whgeto.1
    drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:07 whgeto.2
    garota:~# ls -l /home/webbackup/whgeto.1
    drwxr-xr-x 4 1005 1005 4096 2007-11-08 11:36 getoto.net
    garota:~# ls -l /home/webbackup/whgeto.1/getoto.net/
    drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:36 sql
    drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:10 web


Заключение
Е надявам се това да ви е помогнало поне малко. Вече би трябвало да имате изградена система за напълно автоматизиран и подсигурен бекъп. Поне на мен ми върши добра работа.

Полезни Връзки

Контакти:  zeridon

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Общо 0 отговор(а) от Ноември 08 2007, 15:58 до сега
  • Страница 1 от 1 Skip to Page:
  • 1
 » Начало » Li Форуми » Li Статии » Полезно » Автоматизиран бекъп с rsnapshot и ssh

© 2014 Linux Index Project
Powered by iF 1.0.0 © 2006 ikonForums