Table of Contents
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 новой файловой системы.