---
# System prepended metadata

title: Практическая работа. Резервирование файловых систем.

---

# Практическая работа. Резервирование файловых систем.

**Цель работы**
* Научиться делать резервные копии файловых систем.

## 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)
