Резервная копия linux debian
Создание резервных копий — одна из основных обязанностей любого администратора, но это сложная задача, для которой используются мощные инструменты, которыми подчас непросто овладеть.
Many programs exist, such as amanda , bacula , or BackupPC . Those are client/server systems featuring many options, whose configuration is rather difficult. Some of them provide user-friendly web interfaces to mitigate this. For non-enterprise systems, administrators might want to check out rsnapshot or rdiff-backup . Users can easily create backups of their filesystems with timeshift , fsarchiver , duplicity , or even dd .
Debian contains dozens of other backup software covering all possible use cases, as you can easily confirm with apt-cache search backup .
Вместо того, чтобы описывать некоторые из них, в этом разделе будут приведены рассуждения администраторов Falcot Corp при определении ими стратегии резервного копирования.
В Falcot Corp резервные копии нужны для двух целей: восстановления ошибочно удалённых файлов и быстрого восстановления любого компьютера (сервера или рабочей станции) после отказа жёсткого диска.
9.10.1. Резервное копирование с помощью rsync
Поскольку резервные копии на магнитной ленте сочли слишком медленными и дорогими, данные будут сохраняться на жёстких дисках на выделенном сервере, на котором использование программного RAID (см. Раздел 12.1.1, «Программный RAID») защитит данные от сбоя диска. Резервные копии отдельных настольных компьютеров не делаются, но пользователи извещены, что будет выполняться резервное копирование их учётных записей на файловом сервере их отдела. Команда rsync ежедневно используется для резервного копирования этих серверов.
К ОСНОВАМ Жёсткая ссылка, второе имя файла
Жёсткую сылку, в противоположность символической ссылке, невозможно отличить от самого файла, на который она ссылается. По сути, создание жёсткой ссылки является как бы присвоением второго имени существующему файлу. Именно поэтому, если удалить жёсткую ссылку, то сам файл, на который ранее она ссылалась, не будет удалён (будет удалено только как бы второе имя файла). До тех пор, пока существует другое имя файла в системе, данные, включённые в него, будут оставаться записанными в файловой системе. Интересно отметить, что в отличие от копии файла, жёсткая ссылка не занимает дополнительного пространства на жёстком диске.
Жёсткая ссылка создаётся командой ln цель ссылка . Файл ссылка станет новым именем для файла target. Жёсткие ссылки можно создавать только в пределах одной файловой системы, в то время как на символьные ссылки это ограничение не распространяется.
Доступное дисковое пространство не позволяет реализовать полное ежедневное резервное копирование. Поэтому команде rsync предшествует дублирование содержимого предыдущей резервной копии с помощью жёстких ссылок, что предупреждает использование слишком большого дискового пространства. Процесс rsync затем заменяет только те файлы, которые были изменены с момента создания предыдущей копии. С помощью этого механизма огромное число резервных копий можно хранить на небольшом пространстве. Поскольку все резервные копии немедленно становятся доступными (например в разных каталогах на сетевом ресурсе), можно быстро выполнять сравнения между двумя заданными датами.
Этот механизм резервного копирования легко реализуется с помощью программы dirvish . Она использует хранилище резервных копий («bank» — «банк» — в её терминологии), в котором размещает копии наборов файлов резервных копий с временными метками (в документации dirvish эти наборы называются «vaults» — «подвалы»).
Основные настройки хранятся в файле /etc/dirvish/master.conf . Он определяет местоположение пространства для резервных копий, список управляемых «подвалов» и значения сроков хранения резервных копий по умолчанию. Остальные настройки находятся в файлах bank/vault/dirvish/default.conf и содержат конфигурацию соответствующего набора файлов.
Пример 9.3. Файл /etc/dirvish/master.conf
bank: /backup exclude: lost+found/ core *~ Runall: root 22:00 expire-default: +15 days expire-rule: # MIN HR DOM MON DOW STRFTIME_FMT * * * * 1 +3 months * * 1-7 * 1 +1 year * * 1-7 1,4,7,10 1
The bank setting indicates the directory in which the backups are stored. The exclude setting allows you to indicate files (or file types) to exclude from the backup. The Runall is a list of file sets to backup with a time-stamp for each set, which allows you to assign the correct date to the copy, in case the backup is not triggered at precisely the assigned time. You have to indicate a time just before the actual execution time (according to /etc/cron.d/dirvish ). Finally, the expire-default and expire-rule settings define the expiration policy for backups. The above example keeps forever backups that are generated on the first Sunday of each quarter, deletes after one year those from the first Sunday of each month, and after 3 months those from other Sundays. Other daily backups are kept for 15 days. The order of the rules does matter, Dirvish uses the last matching rule, or the expire-default one if no other expire-rule matches.
НА ПРАКТИКЕ Запланированное истечение сроков хранения
Правила хранения не используются dirvish-expire для выполнения её работы. На самом деле эти правила применяются при создании новой резервной копии, чтобы определить дату истечения срока хранения, ассоциированную с этой копией. dirvish-expire просто просматривает сохранённые копии и удаляет те, для которых эта дата прошла.
Пример 9.4. Файл /backup/root/dirvish/default.conf
client: rivendell.falcot.com tree: / xdev: 1 index: gzip image-default: %Y%m%d exclude: /var/cache/apt/archives/*.deb /var/cache/man/** /tmp/** /var/tmp/** *.bak
В вышеприведённом примере определяется набор файлов для резервного копирования: это файлы на машине rivendell.falcot.com (для копирования локальных данных нужно просто указать имя локальной машины в том виде, как оно отображается командой hostname ), а именно файлы корневого каталога ( tree: / ) за исключением тех, которые перечислены в exclude . Резервная копия будет ограничена содержимым одной файловой системы ( xdev: 1 ). В неё не войдут файлы из других точек монтирования. Будет создан индекс сохранённых файлов ( index: gzip ), и имя образа будет соответствовать текущей дате ( image-default: %Y%m%d ).
There are many options available, all documented in the dirvish.conf (5) manual page. Once these configuration files are setup, you have to initialize each file set with the dirvish —vault vault —init command. From there on the daily invocation of dirvish-runall will automatically create a new backup copy just after having deleted those that expired.
НА ПРАКТИКЕ Удалённое резервное копирование через SSH
Когда dirvish требуется сохранить данные на удалённой машине, он использует ssh для подключения к ней, и запускает rsync как сервер. Для этого необходимо, чтобы пользователь root мог автоматически подключиться к ней. Использование ключа аутентификации SSH позволяет сделать именно это (см. Раздел 9.2.1.1, «Аутентификация по ключу»).
9.10.2. Восстановление машин без резервных копий
Desktop computers, which are not backed up, will be easy to reinstall from custom DVD-ROMs/USB sticks prepared with simple-cdd (see Раздел 12.3.3, «Simple-CDD: решение «всё-в-одном»»). Since this performs an installation from scratch, it loses any customization that can have been made after the initial installation. This is fine since the systems are all hooked to a central LDAP directory for accounts and most desktop applications are preconfigured thanks to dconf (see Раздел 13.3.1, «GNOME» for more information about this).
Администраторы Falcot Corp осознают ограничения своей политики резервного копирования. Поскольку они не могут защитить сервер резервных копий так же хорошо, как магнитную ленту в несгораемом шкафу, они установили его в отдельной комнате, чтобы стихийное бедствие, такое как пожар в серверной комнате, не уничтожило резервные копии вместе со всем остальным. Кроме того, они делают инкрементальные резервные копии на DVD-ROM раз в неделю — туда включаются только те файлы, которые были изменены со времени предыдущего резервного копирования.
УГЛУБЛЯЕМСЯ Резервное копирование сервисов SQL и LDAP
Многие сервисы (такие как базы данных SQL или LDAP) не могут быть запущены для резервного копирования простым копированием их файлов (кроме случаев, когда их работа была корректно завершена до начала старта резервного копирования, а это является проблемой, поскольку работа данных сервисов подразумевает быть доступными в любое время). В этих случаях необходимо использовать механизм экспорта (“export”) для создания дампа данных, который поможет безопасно начать резервное копирование. Зачастую дамп достаточно большой, но он хорошо сжимается. Для уменьшения использования необходимого пространства в резервном хранилище, вам нужно будет только сохранять комплект текстовых файлов каждую неделю, и дополнительно делать команду diff каждый день, которая выглядит примерно так diff файл_из_вчера файл_из_сегодня . Программа xdelta выполняет бесконечно малое приращение (инкрементальных) различий бинарных дампов.
КУЛЬТУРА TAR , стандарт резервных копий на плёнке
Исторически самым простым способом создания резервных копий в Unix было сохранение архива TAR на плёнке. Команда tar даже получила своё название от «Tape ARchive» — «плёночный архив».
Debian Backup (Резервное копирование системы Linux)
Резервное копирование системы (Backup) является одной из важных мер по обслуживанию сервера. Для резервного копирования системы нам понадобится утилита по работе с архивами в Linux системах – tar.
Делаем резервную копию работающей системы Debian
1. Все действия выполняем под пользователем root
2. Смотрим объем свободного места на диске:
root@server:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/md0 413G 17G 376G 5% / tmpfs 7.9G 0 7.9G 0% /lib/init/rw udev 7.9G 136K 7.9G 1% /dev tmpfs 7.9G 0 7.9G 0% /dev/shm
В данном примере вся система установлена на раздел /dev/md0 и занимает 17G, в корень этого раздела мы и будем копировать дамп, т.к. доступно ещё 376G.
3. Переходим в корень системы:
4. Выполняем копирование работающей системы (Внимание. Исключаем из копирования разделы /proc /lost+found/sys и сам архив /backup.tgz, + в данном примере исключаем раздел /web). Для чистоты бэкапа рекомендую вам почистить логи в /var/log , и удалить кеш архивов apt-get clean.
tar cvpzf backup.tgz –exclude=/proc –exclude=/lost+found –exclude=/backup.tgz –exclude=/mnt –exclude=/sys –exclude=/web /
ls -alh -rw-r–r– 1 root root 607M Янв 7 13:28 backup.tgz
Теперь необходимо сохранить backup.tgz на внешний носитель на случай сбоев работы сервера, а потом с лёгкостью восстановить систему в короткие сроки.
Восстановление системы Debian из созданного бэкапа
Если вы делаете восстановление системы на тот же сервер, с теми же разделами жестких дисков, то процесс займёт буквально несколько минут.
1. Загружаемся с Live CD Linux Debian. Копируем backup системы в корень.
2. Распаковываем архив в корень раздела:
3. Теперь прописываем загрузочную область (Из личного опыта, если вы делали разметку GParted утилитой, то в начале диска обязательно оставьте несколько не задействованных мегабайт, иначе grub2 не установится).
grub-install –root-directory=/mnt/ /dev/sda2
(–root-directory=/mnt/ в данном случае указывает, что для корня считать точку /mnt, т.к. туда у нас временно смонтирован раздел sda2)
4. Создаем пустые каталоги /proc/sys . Перезагружаемся и внимательно смотрим на логи, которые выводит система при загрузке.
3. При старте компьютера (до загрузки ОС) заходим в редактор grub2 и правим конфиг в соответствии с именами разделов жёстких дисков.
4. Если система не может запуститься из-за “отсутствие файловой системы”, значит нужно пересобирать initrd загрузчик (это загрузчик, который определяет всё оборудование, а потом далее передаёт ядру ОС управление и дальнейшую загрузку системы) с необходимыми модулями, выполнять это можно загрузившись с Live CD, примонтировав разделы /proc и /sys к системе, в которую мы будем компилировать /mnt/proc /mnt/sys, а далее авторизоваться, как будто бы работает система chroot/mnt.
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.