User Tools

Site Tools


fsarchiver

Fsarchiver

Install

# Fedora
sudo dnf install fsarchiver
 
# Debian
sudo apt install fsarchiver
 
# ArchLinux
sudo pacman -S fsarchiver

Creating a backup

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

Fsarchiver поддерживает несколько типов файловых систем, таких как: ext4, ext3, xfs, btrfs, reiserfs. Приложение может работать в многопоточном режиме и по умолчанию сохраняет стандартные и расширенные атрибуты файлов, используемые SELinux и ACL (Access control list). Файлы, содержащиеся в архиве, могут быть проверены по контрольной сумме.

Получим информации об установленных файловых системах:

sudo fsarchiver probe simple
[======DISK======] [=============NAME==============] [====SIZE====] [MAJ] [MIN]
[sda             ] [Virtual disk                   ] [    16.00 GB] [  8] [  0]
 
[=====DEVICE=====] [==FILESYS==] [======LABEL======] [====SIZE====] [MAJ] [MIN]
[loop0           ] [squashfs   ] [<unknown>        ] [   102.98 MB] [  7] [  0]
[loop2           ] [squashfs   ] [<unknown>        ] [    47.98 MB] [  7] [  2]
[loop3           ] [squashfs   ] [<unknown>        ] [    61.96 MB] [  7] [  3]
[loop4           ] [squashfs   ] [<unknown>        ] [    63.22 MB] [  7] [  4]
[loop5           ] [squashfs   ] [<unknown>        ] [    79.95 MB] [  7] [  5]
[loop6           ] [squashfs   ] [<unknown>        ] [    47.99 MB] [  7] [  6]
[sda1            ] [<unknown>  ] [<unknown>        ] [     1.00 MB] [  8] [  1]
[sda2            ] [ext4       ] [<unknown>        ] [    16.00 GB] [  8] [  2]

Для создания архива нужно использовать подкоманду savefs, указать имя создаваемого архива и исходную файловую систему, которую мы хотим резервировать. Для резервного копирования файловой системы ext4 на устройстве /dev/sda3 выполним команду:

sudo fsarchiver savefs -v /path/to/backup.fsa /dev/sda3

Синтаксис программы очень прост. Единственная опция, которая была указана в примере выше это – -v (режиме verbose, показывает ход операции над каждым файлом).

В качестве первого аргумента команды, мы указали путь к архиву резервного копирования и использовали расширение .fsa после его имени. Использование расширение произвольно: это просто условность, но она может быть полезна, чтобы легче найти созданный файл.

После запуска, первое, что сделает программа – проанализирует файловую систему. Затем она приступит к выполнению операции резервного копирования, вывод приблизительно такой:

Analysing filesystem on /dev/sda3...
====================== archiving filesystem /dev/sda3 ======================
-[00][  0%][DIR     ] /
-[00][  0%][DIR     ] /lost+found
-[00][  0%][DIR     ] /nevvad
-[00][  0%][DIR     ] /nevvad/Templates
-[00][  0%][DIR     ] /nevvad/Documents
-[00][  0%][DIR     ] /nevvad/Music
[...]

FSArchiver работает на уровне файлов и может восстановить данные даже в другой файловой системе, отличающейся от оригинала. То есть можно сделать бэкап всех файлов в системе EXT3 и распаковать их в ReiserFS, или наоборот.

Storing multiple filesystems in the same archive

Одной из приятных особенностей fsarchiver, является возможность хранения нескольких файловых систем в одном архиве. Если случится что-то плохое, и нам понадобится восстановление из резервной копии, все, что нам нужно будет сделать, это обратиться к файловой системе по ее индексу в архиве. Для резервного копирования нескольких файловых систем одновременно мы просто указываем их одну за другой:

sudo fsarchive savefs -v /path/to/backup.fsa /dev/sda2 /dev/sda3

Using compression

Fsarchiver поддерживает две опции для управления сжатием:

  • -z (-compress)
  • -Z (-zstd)

Обе эти опции требуют аргумента, задающего уровень сжатия. Диапазон доступных уровней варьируется в зависимости от того, какую опцию мы используем. Давайте рассмотрим, в чем между ними разница.

Compression with the -z option

Опция –compress (-z) принимает уровень сжатия от 0 до 9. Каждый уровень соответствует алгоритму сжатия, используемому в определенном режиме:

Level Описание команды
0 Use the lz4 algorithm
1 Use lzo with compression level -3
2 Use gzip with compression level -3
3 Use gzip with compression level -6
4 Use gzip with compression level -9
5 Use bzip2 algorithm with level -2
6 Use bzip2 algorithm with level -5
7 Use lzma with compression level -1
8 Use lzma with compression level -6
9 Use lzma with compression level -9

Чем больше значение опции -z, тем лучше будет сжатие, но за это расплачиваемся увеличением времени и объемом памяти. Меньшие значения, наоборот, позволят создавать большие архивы за меньшее время и с меньшим использованием ресурсов.

Compression with the -Z option

Другая опция, которую мы можем использовать для указания уровня сжатия в fsarchiver, это –zstd. Эта опция принимает значение в диапазоне от 0 до 22. Уровень, переданный в опцию, не определяет, какой алгоритм будет использоваться, а просто используется как уровень сжатия zstd.

Exclude files from the backup

В некоторых случаях, мы можем исключить определенные файлы из резервной копии. Например, при создании резервной копии корневого раздела системы мы хотим исключить виртуальные файловые системы, такие как /dev и /proc, которые представляют устройства и процессы, управляемые ядром. Для исключения файлов из резервной копии, используется опция -e (сокращение от –exclude), и указывается шаблон исключения. Файлы и каталоги, соответствующие этому шаблону, будут исключены из резервной копии.

в качестве примера, исключить все файлы с расширением .bk из резервной копии:

sudo fsarchiver savefs -v /path/to/backup.fsa /dev/sda3 --exclude="*.bk"

Running in multi-threaded mode

Как уже упоминалось ранее, fsarchiver может создавать или восстанавливать резервные копии в многопоточном режиме на хостах с многоядерными процессорами. Опция, управляющая этой возможностью – -j (–jobs) в качестве аргумента она принимает число потоков, которые необходимо использовать. Рекомендуемое значение обычно равно количеству доступных логических процессоров – 1. Многопоточный режим работы имеет очевидное преимущество – использование большей вычислительной мощности для задачи резервного копирования или восстановления, которая будет выполнена за меньшее время.

Encrypting the backup archive

Fsarchiver имеет возможность шифровать данные, сохраненные в архиве резервных копий. Чтобы воспользоваться этой возможностью, необходимо использовать опцию -c или ее длинную форму – –cryptpass, и передать в качестве аргумента пароль шифрования. Пароль может быть длиной от 6 до 64 символов или состоять из одного символа тире (-). В последнем случае пользователю будет предложено ввести пароль в интерактивном режиме:

sudo fsarchiver savefs -v /path/to/backup.fsa /dev/sda3 --cryptpass -
Enter password:
Confirm password:
Analysing filesystem on /dev/sda3...
[...]

При восстановлении резервной копии необходимо использовать ту же опцию и пароль.

Inspect an existing archive

После создания архива, мы можем проверить его содержимое с помощью специальной подкоманды archinfo. Все, что нам нужно сделать, это передать путь к архиву в качестве аргумента:

fsarchiver archinfo /path/to/backup.fsa

Вывод будет выглядеть так:

====================== archive information ======================
Archive type:           filesystems
Filesystems count:      2
Archive id:             5e7934e4
Archive file format:        FsArCh_002
Archive created with:       0.8.5
Archive creation date:      2020-03-20_19-51-05
Archive label:          <none>
Minimum fsarchiver version: 0.6.4.0
Compression level:      8 (zstd level 8)
Encryption algorithm:       none
 
===================== filesystem information ====================
Filesystem id in archive:   0
Filesystem format:      ext4
Filesystem label:
Filesystem uuid:        69d250a7-16d0-47fd-8ca2-6513d32c1e5a
Original device:        /dev/sda2
Original filesystem size:   34.20 GB (36722737152 bytes)
Space used in filesystem:   6.15 GB (6608547840 bytes)
 
===================== filesystem information ====================
Filesystem id in archive:   1
Filesystem format:      ext4
Filesystem label:
Filesystem uuid:        ec7d21e9-56b8-4fef-abc7-d9da2a4ad45c
Original device:        /dev/sda3
Original filesystem size:   14.70 GB (15786254336 bytes)
Space used in filesystem:   3.29 GB (3536240640 bytes)

В первой секции вывода мы видим общую информацию об архиве, такую как дата создания и уровень сжатия. После этого, следует информация о каждой файловой системы, сохраненной в архиве. Среди прочего мы можем увидеть числовой идентификатор, присвоенный файловой системе, ее UUID, ее формат (в данном случае ext4), путь к исходному устройству, общий размер файловой системы и используемое на ней пространство. Возможность идентифицировать файловые системы по id необходима для восстановления резервной копии.

Restoring a backup

Для восстановления резервной копии, созданной с помощью fsarchiver, используется подкоманду restfs. В качестве первого аргумента, указываем путь к архивной резервной копии, идентификатор архива файловой системы, которую мы хотим восстановить, и устройство назначения. Согласно приведенному выше примеру, для восстановления резервной копии, созданной для файловой системы на устройстве /dev/sda2, мы должны выполнить команду restfs:

sudo fsarchiver restfs /path/to/backup.fsa id=0,dest=/dev/sda2

Для восстановления нескольких резервных копий, нам будет нужно только поправить шаблоны id, dest:

sudo fsarchiver restfs /path/to/backup.fsa id=0,dest=/dev/sda2 id=1,dest=/dev/sda3

Командой выше, мы восстановили первую резервную копию в архиве в раздел /dev/sda2, а вторую в /dev/sda3.

Очень важно отметить, что при восстановлении fsarchiver не только восстанавливает файлы, но и воссоздает исходную файловую систему. Это очень полезно, поскольку, например, избавляет от необходимости настраивать файл /etc/fstab, который обычно должен быть обновлен UUID новой файловой системы.

fsarchiver.txt · Last modified: 2023/04/06 10:28 (external edit)