# Практическая работа. Резервирование файловых систем. ###### tags: `лабы по Debian 11` **Цель работы** * Научиться делать резервные копии файловых систем. ## I. Резервирование каталога с помощью создания LVM-снапшота ##### 1.1 Устанавливаем соответствующий пакет утилит для работы с LVM. `apt install lvm2` ![](https://i.imgur.com/8oKeuit.png) > Перед установкой следует обновить репозитории пакетного менеджера последовательным выполнением команд `apt update` и `apt upgrade`. ##### 1.2 Выделяем дополнительный раздел для хранения копии - sdb на 5 ГиБ `fdisk -l` ![](https://i.imgur.com/L43n0at.png) > Команда `fdisk` с опцией `-l` выводит таблицу разделов устройств, указанных в файле `/proc/partitions`. ##### 1.3 Эмулируем разные разделы диска делением исходного на две части. `cfdisk /dev/sdb` ![](https://i.imgur.com/GidS5bB.png) > Команда `cfdisk` позволяет "нарезать" дополнительные разделы на диске. ##### 1.4 Отмечаем физические разделы для создания на них LVM-томов. `pvcreate /dev/sdb1 /dev/sdb2` ![](https://i.imgur.com/4LEN4tZ.png) ![](https://i.imgur.com/UMdWe7t.png) > Команда `pvcreate` позволяет "отметить" том как физический диск/раздел, который может быть включенным в Volume Group. ##### 1.5 Проверяем результат создания физических томов. `pvdisplay` ![](https://i.imgur.com/XdpCpPx.png) > Команда `pvdisplay` выводит подробную информацию о физических томах. ##### 1.6 Объединяем тома в группу томов. `vgcreate snap_test /dev/sdb{1,2}` > Команда `vgcreate` создает группу томов из существующих физических. ![](https://i.imgur.com/o2fo5zQ.png) ##### 1.7 Проверяем результат. `vgdisplay` ![](https://i.imgur.com/1kJDaFW.png) > Команда `vgdisplay` выводит информацию о физических объединениях томов в виде групп томов (VG). ##### 1.8 Создаем два логических тома. `lvcreate -L 500 -n lvol0 snap_test` `lvcreate -L 1G -n lvol1 snap_test` ![](https://i.imgur.com/PPihKxZ.png) > Команда `lvcreate` создает логический том определенного размера. ##### 1.9 Проверяем результат. `lvdisplay` ![](https://i.imgur.com/TGIj7Pg.png) > Команда `lvdisplay` выводит информацию о логических томах (LV). ##### 1.10 Создаем файловую систему на базе логического тома. `mkfs.ext4 /dev/snap_test/lvol0` ![](https://i.imgur.com/PnICcPu.png) > Команда `mkfs.ext4` определяет тип файловой системы, которая будет использована на логическом томе. ##### 1.11 Создаем директорию в исходной ФС и монтируем к ней получившийся логический том. `mkdir -p /mnt/volume1` `mount /dev/snap_test/lvol0 /mnt/volume1` ![](https://i.imgur.com/ORNf8W9.png) > Команда `mkdir` создает директорию '/alku', а команда `mount` монтирует логический том к разделу на основном диске. ##### 1.12 Копируем для проверки директорию /usr/bin в логический раздел. `cp -av /usr/bin/* /mnt/volume1/` ![](https://i.imgur.com/cxS6wmG.png) > Команда `cp` с опциями `-av` копирует все файлы и каталоги с сохранением структуры исходных файлов и выводит в консоль имена всех файлов. ##### 1.13 Проверяем размер копируемой директории. `du -s /usr/bin/` ![](https://i.imgur.com/QKpl9Hm.png) > Команда `du` с опцией `-s` выводит информацию об объеме дискового пространства, занятого файлами и директориями. ##### 1.14 Создаем снимок логического тома, который содержит /usr/bin исходной ФС. `lvcreate -s -L 20M -n vol_snap_test /dev/snap_test/lvol0` ![](https://i.imgur.com/3YqTCsU.png) > Команда `lvcreate` с опциями `-s -L 20M -n vol_snap_test` создает логический том указанного размера и на основе группы томов. Полный синтаксис команды выглядит следующим образом `lvcreate [опции] <имя группы томов>`. Помимо размера тома можно дополнительно указать и другие параметры: -L - размер создаваемого тома (дефолтно, в байтах, но можно указать единицу измерения - k,K,m,M,g,G,t,T,p,P) -n - имя для нового логического тома (дефолтно, lvol#, где # - номер LV) -s - создать снапшот для использования логического раздела в качестве бэкапа ##### 1.15 Очищаем директорию, снимок которой был сделан. `rm -rf /mnt/volume1/*` ![](https://i.imgur.com/KjlzdZM.png) > Команда `rm` с опциями `-rf` рекурсивно удалит без подтверждения и кода ошибочного завершения все файлы в директории. ##### 1.16 Используем объединение снимка с логическим томом для восстановления данных. `lvconvert --merge /dev/snap/vol_snap_test` > Команда `lvconvert` с опцией `--merge` объединяет моментальный снимок с исходным томом. Если исходный том и том моментального снимка не открыты, слияние начнется немедленно. В противном случае слияние начнется при первой активации источника или моментального снимка. ![](https://i.imgur.com/K4vc1di.png) ##### 1.17 Слияние снимка произойдет после повторной активации логического тома в исходной ФС и появлении изменений между ним и его снимком, поэтому нужно "перезагрузить" раздел, отмаунтив его и деактивировав. `umount /mnt/volume1/` ![](https://i.imgur.com/pT4YV5n.png) `lvchange -a n /dev/snap_test/lvol0` `lvchange -a y /dev/snap_test/lvol0` ![](https://i.imgur.com/TXVnkPy.png) > Команда `umount` снимает точку монтирования с директории 'alku', тем самым разделив файловую систему основного диска от логического тома. Команда `lvchange` с опциями `-a n` меняет атрибуты логического тома, а именно отключает/включает доступность логического тома для использования. ##### 1.18 Монтируем логический том обратно к ФС и проверяем, восстановился ли раздел до своего исходного состояния, с которого делался снимок. `mount /dev/snap_test/lvpl0 /mnt/volume1/` `du -s /mnt/volume1` ![](https://i.imgur.com/khEz2pb.png) ##### 1.19 "Открепляем" и деактивируем том из-за окончания работы с ним. `umount /mnt/volume1/` `lvchange -a n /dev/snap_test/lvol0` ![](https://i.imgur.com/PuSHE5s.png) ## II. Резервирование файловой системы с помощью rsync. ##### 2.1 Создаем полнотелую копию ФС, исключая файлы, генерируемые самой ОС и каталог назначения, чтобы избежать бесконечного зацикливания. Директория назначения резервной копии может быть любой. `rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/media/*","/lost+found/"} /tmp/backup1` ![](https://i.imgur.com/cY7XYqZ.png) > Команда `rsync` копирует только различия между исходными файлами и существующими файлами в пункте назначения. Основные ключи, используемые rsync: -a - выполнение копирования, используя рекурсию и сохраняя все файлы, кроме "жестких" ссылок, т.е. связанные файлы будут передаваться как отдельные. -A - rsync обновит списки управления доступом назначения так, чтобы они совпадали с исходными списками управления доступом. Для правильной работы этой опции исходная и конечная системы должны иметь совместимые записи ACL -X - rsync обновит удаленные расширенные атрибуты так, чтобы они совпадали с локальными. Для систем, поддерживающих пространства имен с расширенными атрибутами, копирование, выполняемое суперпользователем, копирует все пространства имен, кроме system.* Обычный пользователь копирует только пространство имен user.* -v - rsync увеличивает объем информации, которую демон регистрирует на этапе запуска. --exclude - исключает из копирования файлы или каталоги. ##### 2.2 Восстановление резервной копии подразумевает копирование резервного архива в исходную ФС. `rsync -aAXv /tmp/backup1 --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/media/*","/lost+found/"} /` ![](https://i.imgur.com/nWfdyy5.png)