FSArchiver 是什么
FSArchiver 在文件系统层面做归档:savefs 把一个分区的文件系统内容打包成 .fsa 文件,restfs 把它还原到目标分区。与 dd 整盘镜像不同,它按文件系统语义抓取,归档与底层磁盘布局解耦,因此可以恢复到大小不同、布局不同的磁盘上,并支持多线程压缩,适合系统盘迁移与分区级备份。
基本信息
| 适用平台 | Linux,目标文件系统需被本机内核支持(ext4、xfs、btrfs 等) |
|---|---|
| 粒度 | 整个分区或文件系统,不做单文件挑选 |
| 常用子命令 | savefs 备份、restfs 恢复、archinfo 查看归档信息 |
| 压缩与线程 | 支持多级压缩,-j 指定压缩线程数 |
| 权限要求 | 读写块设备需要 root |
| 已知限制 | LVM 逻辑卷、软 RAID 成员与引导加载器需要额外处理步骤 |
典型使用场景
- 系统盘迁移:从旧机器抓一份归档,恢复到新机器容量更大的分区
- 分区级定期备份:比整盘 dd 体积小,且不依赖目标盘几何结构
- 换盘扩容:旧盘装不下时把归档恢复到更大的新分区
- 装机标准化:把调试好的系统做成归档,批量还原到同型号机器
- 临时快照式留存:重大变更前先抓一份归档,变更失败可整体回退
备份与恢复
备份与恢复
fsarchiver savefs -j 4 -o /backup/rootfs.fsa /dev/sda2 # 4 线程压缩打包 sda2
fsarchiver savefs -c 'mypass' -j 4 -o /backup/enc.fsa /dev/sda2 # 加密归档
fsarchiver archinfo /backup/rootfs.fsa # 查看归档元信息
fsarchiver restfs /backup/rootfs.fsa id=0,dest=/dev/sdb2 # 恢复到目标分区(会格式化)
grub-install /dev/sdb && update-grub # 恢复后重装引导
# 恢复系统盘时建议在救援环境或 LiveCD 下操作,避免写入中分区archinfo 输出读法
| 字段 | 含义 | 正常/异常 |
|---|---|---|
| Filesystem | 归档内的文件系统类型 | 必须与目标分区上的工具链匹配 |
| Compression | 使用的压缩算法与级别 | 目标机版本不支持该算法时无法解包 |
| Files saved | 归档包含的文件数 | 明显偏少说明抓取中途被中断 |
| Original size | 原始数据量 | 与源分区已用空间应大致相当 |
| Size | 归档实际体积 | 接近原始大小说明压缩几乎没起作用 |
| Volume / Partitions | 归档内的卷与分区编号 | 多分区归档恢复时必须逐个指定 id 与 dest |
restfs 会格式化目标分区:执行前务必确认 dest 指向的是正确设备。误写到在线数据盘属于不可逆操作,恢复窗口与操作人都要提前确认。
LVM 逻辑卷、软 RAID 成员、加密卷不能简单按分区归档,需要在卷层或文件系统层分别处理,具体步骤以官方文档并结合自身环境验证后再执行。