Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

00-tech-book

.pdf
Скачиваний:
74
Добавлен:
10.02.2016
Размер:
7.86 Mб
Скачать

Скрипт в помощь

Этого материала достаточно чтобы начать пользоваться rsync в создание своих файловых зеркал/резервных копий. Ниже я дам пример скрипта, который может помочь когда нужно копировать набор каталогов с

удаленного сервера.

#!/bin/bash

#backup.sh

LIST=/var/backup/backup.list

cat ${LIST} | while read res; do

rsync -e ssh -avz --delete-after --force rsync@unixbox:$res /var/backup done

Файл /var/backup/backup.list должен содержать список каталог для копирования. Примерно так:

/etc

/var/www/cms

/usr/local/etc

/var/billing

Зеркалируем разделы (используем dd)

Программа dd идеально подойдет там где нужно сделать точную копию раздела/слайса диска. Она сектор за сектором копирует данные из источника (параметр if) в пункт назначения, если так можно выразиться (параметр of). Чтобы понять как просто пользоваться программой давайте сделаем это на практике.

# dd if=/dev/hda of=/dev/hdb conv=noerror,sync

Команда выше сделает точную копию раздела /dev/hda в разделе /dev/hdb. То есть мы «отзеркалировали» /dev/hda

После conv= мы можем указать ряд параметров.

noerror — продолжать копирование не обращая внимание на bad-блоки и прочие ошибки

sync — поврежденные или отсутствующие данные во входном буфере на выходе будут заменены на нули. Опция замедляет работу команды dd, но для более корректного образа стоит воспользоваться ею.

# dd if=/dev/hda3 of=/var/backup/hda3.img

Этой командой мы записали раздел /dev/hda3 в бинарный файл hda3.img. Теперь его можно перенести на другой сервер и развернуть в точную копию

Модуль 1. Резервное копирование.

 

21

 

 

 

 

 

/dev/hda3. Только учтите один минус dd — программа копирует данные по секторам и ей все равно есть на этом участке диска данные или нет, будет воссоздана точная копия и размер будет точно такой же! То есть если раздел /dev/hda3 имеет объем в 5 Гб а занят на нем только 1 то файл hda3.img будет весить 5 Гб.

Восстановить раздел из образа также просто как и создать:

# dd if=/var/backup/hda3.img of=/dev/hda3

Ну и напоследок сделаем копию нашей MBR (Master Boot Record). MBR – это первый сектор на жестком диске содержащий таблицу разделов и запись, с какого раздела загружаться. Иногда требуется восстановить MBR из резерва.

# dd if=/dev/hda1 of=/var/backup/mbr.dump bs=512 count=1

Команде dd мы просто передали параметры bs и count, этим указав какой объем данных мы хотим скопировать.

bs — block size, размера блока который мы хотим скопировать

count — количество bs

Мы ведь уже знаем, что MBR находится в первых 512 байтах (1-й сектор).

Теперь восстановим MBR из резервной копии

#dd if=/var/backup/mbr.dump of=/dev/hda1 bs=512 count=1 Размер сектора можно узнать так:

#fdisk -l /dev/hda1

Amanda - Advanced Maryland Automatic Network Disk Archiver

Amanda – это клиент/серверная система создания резервных копий. Хороший выбор для средних и крупных предприятий. Что тут говорить,

22

 

Модуль 1. Резервное копирование.

 

 

 

сама корпорация Xerox использует Amanda в своей ИТ инфраструктуре. Изначально Amanda была создана для работы с ленточными накопителями но сейчас активно используется при бекапе на HDD. Такая концепция получила название “виртуальные ленты” (vtapes). Amanda не испытывает проблем при работе в гетерогенных сетях (в сетях, которые используют

разные платформы и операционные системы).

Некоторые термины

level 0 – полный бекап

level 1 – инкрементальный бекап

level n – инкрементальный бекап с момента предыдущего инкрементального бекапа (level n-1)

Disklist Entry (DLE) – каждая запись в файле disklist

dumpcycle – Промежуток времени в течение которого делается level 0 backup каждой из DLE (обычно 1 неделя)

runspercycle – сколько раз Amanda будет запущена в течение dumpcycle

tapecycle – сколько лент будет использовано в системе резервного копирования

Мы рассмотрим версию Amanda-2.5.0p2

Настройка Amanda Server

Описание

fasttech – так назовем наш проект про резервному копированию

centos52 – Amanda Server

unixbox – Amanda Client

/var/backup – каталог для резервных копий

Задача

Будем делать бекап каталога /etc сервера unixbox. Один раз в неделю будем делать полный бекап, остальные – инкрементальный.

Начинаем установку

yum -y install amanda-server.i386

Создаем каталог для нового проекта и копируем файл amanda.conf из проекта по умолчанию.

mkdir /etc/amanda/fasttech

Модуль 1. Резервное копирование.

 

23

 

 

 

cp /etc/amanda/DailySet1/amanda.conf /etc/amanda/fasttech/

Редактируем файл /etc/amanda/fasttech/amanda.conf

org «Fasttech.ru» mailto «root» dumpuser «amanda»

dumporder «sssS»

taperalgo first

displayunit «m»

dumpcycle 5 runspercycle 5 tapecycle 10

tpchanger «chg-disk» # /usr/lib/amanda/chg-disk tapedev «file:/var/backup»

tapetype DISK

labelstr «fasttech-.*»

infofile «/etc/amanda/fasttech/curinfo» logdir «/etc/amanda/fasttech» indexdir «/etc/amanda/fasttech/index»

define tapetype DISK { length 500000 MB

define dumptype comp-tar { program «GNUTAR» compress fast

index yes

Создаем структуру каталогов и файлов которые потребуются во время работы.

# mkdir /etc/amanda/fasttech/{curinfo,index}

Создаем два пустых файла

# touch /etc/amanda/fasttech/{tapelist,disklist}

Нашему проекту назначаем правильного владельца

# chown -R amanda:disk /etc/amanda/fasttech/

24

 

Модуль 1. Резервное копирование.

 

 

 

В файл disklist помещаем систему с которой будем делать бекап и директорию

# echo 'unixbox /etc comp-tar' > /etc/amanda/fasttech/disklist

Разрешаем пользователю root с сервера unixbox получать с нас бекап.

# echo 'unixbox root' > `grep amanda /etc/passwd | cut -d: -f6`/.amandahosts

Создаем директорию для временных файлов

# mkdir -p /var/backup/holding

В цикле создаем директории для наших будущих виртуальных лент

# for i in 1 2 3 4 5; do mkdir /var/backup/slot$i; done

Делаем символическую ссылку первой ленты на каталог data

# ln -s /var/backup/slot1 /var/backup/data

Устанавливаем права на backup-директорию

# chown -R amanda:disk /var/backup/

Создаем каталог amanda

# mkdir -p /usr/adm/amanda

Устанавливаем правильного владельца на директорию

#chown -R amanda:disk /usr/adm/amanda Переходим на учетную запись amanda

#su - amanda

В свой файл настроек добавляем каталог /usr/sbin в переменную PATH. Тогда не нужно будет писать полный путь к программам расположенным в этом каталоге, достаточно только указать их название.

$ echo «export PATH=$PATH:/usr/sbin» >> .bash_profile

Проверяем статус “лент”

$ ammt -t file:/var/backup/ status file:/var/backup/ status: ONLINE

Переходим в бекап-директорию

$ cd /var/backup

Модуль 1. Резервное копирование.

 

25

 

 

 

Помечаем директории и виртуальную ленту

$ for i in 1 2 3 4 5; do amlabel fasttech fasttech-$i slot $i; done Сбрасываем счетчик лент

$ amtape fasttech reset

Проверим корректность нашего amanda.conf

$ amcheck -s fasttech

Amanda Tape Server Host Check

slot 3: read label `fasttech-3’, date `X’

NOTE: skipping tape-writable test

Tape fasttech-3 label ok

WARNING: tapecycle (5) <= runspercycle (5).

Server check took 0.070 seconds

(brought to you by Amanda 2.5.0p2)

Если серьезных ошибок не замечено то продолжаем дальше.

Запускаем сервис

Вфайле /etc/xinetd.d/amandaidx меняем disable=yes на disable=no

#/etc/init.d/xinetd restart

Проверяем, начала ли работать наша служба

# netstat -lp | grep :amanda

 

 

tcp

0 0 *:amandaidx

*:*

LISTEN 3403/xinetd

Сервер готов.

Amanda client

# yum -y install amanda-client

Разрешаем серверу centos52 получать с нас бекап.

# echo «centos52 amanda» > `grep amanda /etc/passwd | cut -d: -f6`/. amandahosts

Запускаем сервис

Вфайле /etc/xinetd.d/amanda меняем disable=yes на disable=no

#/etc/init.d/xinetd restart

#netstat -lp | grep :amanda

udp

0 0 *:amanda

*:*

4850/xinetd

Клиент готов.

26

 

Модуль 1. Резервное копирование.

 

 

 

Backuping

Бекапы делаем от пользователя amanda

# su - amanda

Делаем бекап каталога /etc с сервера unixbox (ну или что там у вас в /etc/ amanda/fasttech/disklist)

$ amdump fasttech

Проверим, получилось ли у нас..

$ amadmin fasttech info unixbox /etc

Current info for unixbox /etc:

Stats: dump rates (kps), Full: 968.0, -1.0, -1.0

Incremental: -1.0, -1.0, -1.0

compressed size, Full: 26.0%,-100.0%,-100.0%

Incremental: -100.0%,-100.0%,-100.0%

 

 

 

 

 

 

Dumps: lev datestmp tape

file

origK

compK secs

 

 

 

 

 

 

0 20090214 fasttech-3

1

11190

2906 3

 

Как видим бекап был успешно сделан. Поскольку мы делали первый раз бекап каталога /etc то был сделан полный дамп (Dumps: 0)

Сделав бекап еще раз, мы увидим что на этот раз получена инкрементальная копия (Dumps: 1)

$ amadmin fasttech info unixbox /etc

 

Current info for unixbox /etc:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Stats: dump rates (kps), Full: 968.0, -1.0, -1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Incremental: 2891.0, -1.0, -1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

compressed size, Full: 26.0%,-100.0%,-100.0%

 

 

 

 

 

 

 

 

 

 

 

 

Incremental: 26.1%,-100.0%,-100.0%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dumps: lev datestmp tape

file

origK

 

compK secs

 

 

 

 

 

 

 

 

 

 

 

0 20090214

fasttech-3

1

11190

2906

3

 

 

 

 

 

 

 

 

 

 

1 20090214

fasttech-4

1

11080

2891

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Restoring

su - amanda

Выясняем на каких лентах есть нужный нам каталог.

$ amadmin fasttech info unixbox /etc

Модуль 1. Резервное копирование.

 

27

 

 

 

 

Current info for unixbox /etc:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Stats: dump rates (kps), Full: 968.0,

-1.0, -1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Incremental: 2891.0, -1.0, -1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

compressed size, Full: 26.0%,-100.0%,-100.0%

 

 

 

 

 

 

 

 

 

 

Incremental: 26.1%,-100.0%,-100.0%

 

 

 

 

 

 

 

 

 

 

 

Dumps: lev datestmp tape

file origK

 

compK secs

 

 

 

 

 

 

 

 

 

 

0 20090214

fasttech-3

1

11190

2906

3

 

 

 

 

 

 

 

 

 

 

 

1 20090214

fasttech-4

1

11080

2891

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если версий этого файла много то можно использовать такую команду

$ amadmin fasttech find unixbox /etc

Scanning /var/backup/holding...

Scanning /var/backup/holding...

 

 

 

 

 

date

host disk lv tape or file file part status

 

 

 

 

 

 

 

 

2009-02-14 unixbox /etc

0 fasttech-3

1

-- OK

 

 

 

 

 

2009-02-14 unixbox /etc

1 fasttech-4

1

-- OK

К примеру нам нужен файл shells из каталога /etc c ленты fasttech-3

Вставляем нужную ленту

$ amtape fasttech slot 3

Получаем нужный архив с этой ленты в наш текущий каталог

$ amrestore file:/var/backup/ unixbox '/etc'

Полученный файл — это tar-архив. Теперь возьмем из него файл shells.

$ tar xvf unixbox._etc.20090214.0 ./shells

Файл shells отправляем на сервер unixbox и замещаем им поврежденный

Точно также работаем с целыми наборами каталогов. Если команде amrestore не передавать в качестве аргумента нужный нам каталог то мы получим все резервируемые каталоги с сервера. Дальше дело техники.

Чтобы делать бекап в 4 утра каждый будний день, пользователю amanda в crontab (crontab -e) помещаем такую строку:

0 4 * * 1-6 /usr/sbin/amdump fasttech

Полезное

Эта команда попросит Amanda сделать полный бекап каталога /etc с сервера unixbox в следующий раз:

amadmin fasttech force unixbox /etc

Команда перемотает виртуальную ленту на начало

ammt -t file:/var/backup rewind

Конфигурационный файл /etc/amanda/fasttech/amanda.conf

28

 

Модуль 1. Резервное копирование.

 

 

 

 

 

org

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Название компании;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

mailto

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кому отправлять почтовые отчеты;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dumpuser

 

 

 

 

 

 

 

 

Логин используемый для бекапов;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приоритет дампера.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dumporder

 

 

 

 

 

 

 

 

s – маленький размер;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S – большой размер.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

taperalgo

 

 

 

 

 

 

 

Алгоритм для выбора какой дамп записывать на ленту;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

displayunit

 

 

 

 

 

В каких еденицах отображать цифры, используем мегабайты;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dumpcycle

 

Число дней в backup-цикле;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

runspercycle

 

Тоже самое что и dumpcycle;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Число лент которое Amanda использует в порядке ротации,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tapecycle

 

 

 

 

 

 

должно быть больше чем в dumpcycle, обычно это количество

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лент dumpcycle*2;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tpchanger

 

 

 

 

 

 

 

 

 

Название устройства по смене лент;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tapedev

 

 

 

 

 

 

 

 

 

 

 

 

 

Тип ленточного устройства;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тип ленточного устройства ассоциированного с tapedev;

tapetype

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

labelstr

 

 

 

 

 

Метка которая будет наноситься на ленты;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

infofile

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Опции задают расположение log-файлов, индексных файлов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

logdir

 

 

 

 

 

 

(содержащих образ бекап-директорий);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

indexdir

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

define tapetype

 

Задает бекап-устройство, в моем примере это диск на 500 Гб;

 

 

 

 

 

 

 

define dumptype

 

 

 

 

 

Здесь задаются backup-опции.

Подводим итоги

Принцип работы Amanda понять не сложно. Есть сервер с запущенной

службой через xinetd и есть клиенты с запущенным сервисом ожидающим подключения от сервера. В файле .amandahosts на клиенте мы разрешаем каким серверам можно получать с нас бекап. В файле disklist на сервере мы перечисляем список серверов и каталогов которые мы хотим резервировать с них. Как я писал выше, изначально Amanda была создана для работы с ленточными накопителями и это дает о себе знать. Нам нужно создать набор каталогов и пометить их как лента. Как будто мы работаем с набором лент ленточного накопителя. При каждом запуске резервного копирования ленты последовательно будут меняться в “виртуальном лотке”.

Резюме

Мы разобрали теорию бекапов и научились на практике дублировать наши данные разными способами.

Домашняя работа

УстановитьинастроитьAmanda,сделатьпарубекапов,потомудалить“случайно” какой-нибудь файл в системе и восстановить его средствами Amanda.

Модуль 1. Резервное копирование.

 

29

 

 

 

Сетевой интерфейс Linux

Сетевой интерфейс – это точка присутствия сервера в локальной сети. В свою очередь, локальная сеть скорее всего будет иметь доступ в глобальные

сети.

Настройка сетевого интерфейса очень частая работа для системного администратора и в ней нет нечего сложного.

Какие файлы влияют на работу сетевого интерфейса

/etc/modprobe.conf – здесь загружаются модули ядра для различных устройств

alias eth0 pcnet32

alias eth1 pcnet32

/etc/hosts – здесь находится список ip-адресов и назначенных им имен. Удобно в отсутствие DNS-сервера или когда нет необходимости сообщать

эти имена на всю сеть.

/etc/resolv.conf – в этом файле указываются DNS сервера. DNS-сервер задается директивой nameserver

# cat /etc/resolv.conf

nameserver 192.168.146.2

/etc/host.conf – файл указывает последовательность использования механизмов разрешения имени. В нашем случае сначала используем /etc/ hosts а только потом DNS-сервер.

# cat /etc/host.conf

order hosts,bind

/etc/init.d/network – скрипт останавливающий и запускающий работу сети в Linux

/proc/sys/net/ipv4/ip_forward – включение маршрутизации для своих интерфейсов, если у вас два или более интерфейсов её нужно включить. Включение осуществляется передачей “1” в этот файл.

# echo '1' > /proc/sys/net/ipv4/ip_forward

/etc/sysconfig/network — здесь мы указываем, является ли наш сервер доступным по сети, если да то по каким протоколам и указываем наш hostname, то есть имя сервера. Default gateway рекомендуется указывать здесь.

# cat /etc/sysconfig/network

NETWORKING=yes

30

 

Модуль 2. Сетевой интерфейс Linux.