Fsarchiver是一个免费软件实用程序,可在单个存档中创建一个或多个文件系统的备份。这种备份的一大优势是,我们可以在比原始备份文件系统小的文件系统上进行恢复(当然,该文件系统足够大,可以容纳所有文件);在本文中,学习如何安装和使用应用程序。在本教程中,你将学习:如何使用fsarchiver创建备份如何在多线程模式下运行fsarchiver如何用一个命令备份多个文件系统如何加密备份如何检查备份归档如何还原备份
使用的软件需求和约定以root用户或通过sudo命令对Linux系统的特权访问
# - 以root特权直接作为root用户执行,或者通过使用sudo命令
$ - linux命令以普通用户的身份执行
安装Fsarchiver
安装fsarchiver非常简单,应用程序被打包并可在最常用的Linux发行版的存储库中获得,可以安装,程序的最新版本是0.8.5;要在Fedora上安装它,运行以下命令:$ sudo dnf install fsarchiver
在Debian和衍生产品上,根据你的喜好,可以使用aptitude或apt-get安装包;$ sudo apt install fsarchiver
Fsarchiver在Extra发行版的ArchLinux存储库中可用;可以使用pacman安装它:$ sudo pacman -S fsarchiver
创建备份
首先,在创建文件系统的备份之前,必须确保它没有被挂载,或者至少是在只读模式下挂载,如果提供了适当的选项,fsarchiver也可以在挂载的文件系统上工作,但是如果希望备份保持一致,应该绝对避免这种情况:如果使用lvm逻辑卷,可以创建文件系统的快照并在它上运行fsarchiver ,否则应该从"live"环境创建备份。
Fsarchiver支持几种文件系统类型,如,ext4,ext3,该应用程序可以在多线程模式下运行,并且默认情况下设置为保留标准文件和扩展文件属性,如SELinux和ACL(访问控制列表)所使用的。归档文件中包含的文件可以通过校验和进行验证。
要创建归档文件,需要使用savefs命令,并指定将创建的归档文件的名称和要备份的源文件系统,要在ext4文件系统设备上备份/dev/sda3,运行:$ sudo fsarchiver savefs -v /path/to/backup.fsa /dev/sda3
程序的语法非常简单,上面示例中提供的唯一选项是-v:这将导致程序以详细模式运行,能够看到对每个文件及它进度执行的操作。
作为命令的第一个参数,指定备份归档的路径,并在它名称后面使用.fsa后缀,后缀的使用是任意的。
启动命令后,程序将做的第一件事是分析filsystem,然后,它将继续实际的备份操作,正如从输出中看到的:Analysing filesystem on /dev/sda3...
====================== archiving filesystem /dev/sda3 ======================
-[00][ 0%][DIR ] /
-[00][ 0%][DIR ] /lost+found
-[00][ 0%][DIR ] /egdoc
-[00][ 0%][DIR ] /egdoc/Templates
-[00][ 0%][DIR ] /egdoc/Documents
-[00][ 0%][DIR ] /egdoc/Music
[...]
将多个文件系统存储在同一个归档文件中
fsarchiver的一个很好的特性是能够将多个文件系统存储在同一个归档中,如果发生错误,需要从备份中恢复,所要做的就是通过归档文件内的索引引用文件系统,要一次备份多个文件系统,只需一个地指定它们:$ sudo fsarchive savefs -v /path/to/backup.fsa /dev/sda2 /dev/sda3
使用压缩
Fsarchiver支持两个选项来管理压缩:-z (-compress )-Z (-zstd )
这两个选项都需要一个参数来指定压缩级别,可用级别的范围取决于使用的选项,来看看它们之间的区别是什么。
使用-z选项进行压缩
--compress选项(-z )接受从0到9的压缩级别,每个级别对应于与特定模式一起使用的压缩算法:
-z选项值越高,压缩效果就越好,但是要花费更多的时间和内存。
使用-Z选项进行压缩
另一个选项,可以用fsarchiver指定压缩级别是--zstd,此选项接受从0到22的值范围。
从备份中排除文件
在某些情况下,由于各种原因,可能希望从备份中排除某些文件,例如,当创建系统root分区的备份时,希望排除所谓的伪文件系统,比如/dev和/proc,要从备份中排除文件,必须使用-e选项(--exclude的缩写),并提供排除模式,该模式匹配的文件和目录将从备份中排除。
例如,希望从备份中排除".bk"扩展名的文件,运行:$ sudo fsarchiver savefs -v /path/to/backup.fsa /dev/sda3 --exclude="*.bk"
在多线程模式下运行
如上所述,fsarchiver可以在具有多个CPU内核的机器上以多线程模式创建或恢复备份,控制此功能的选项为-j (--jobs ):它接受作为参数的线程数,通常建议值等于可用逻辑处理器的数量-1,以多线程模式运行具有明显的优势,可以为备份或还原任务使用更多处理能力,这将在更短的时间内完成。
加密备份归档文件
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...
[...]
还原备份时必须使用相同的选项和密码。
检查现有归档文件
到目前为止,看到了如何创建备份归档文件,创建归档文件后,我们可以使用fsarchiver专用子命令检查其内容:按照前面的示例,运行:$ 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:
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)
在输出的第一部分,找到关于归档的一般信息,作为创建日期和压缩级别;之后,可以检索归档中保存的每个文件系统的信息,需要能够按id标识文件系统来恢复备份:在下一节中,看到如何做到这一点。
还原备份
要恢复使用fsarchiver创建的备份,必须使用restfs子命令,以第一个参数的形式提供归档备份的路径,要恢复的文件系统的归档id和目标设备,下面的例子恢复为文件系统在/dev/sda2设备上创建的备份,运行:$ 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更新,
结论
在Linux上有许多开源备份解决方案;在本文中讨论了fsarchiver,在最常见的Linux发行版中安装这个程序,以及如何使用它创建一个备份,这个备份也可以被加密,看到了如何检查备份归档文件以及如何恢复文件系统,这是fsarchiver主页,如果您想了解更多有关该程序的信息,那绝对值得!