系统备份 - Arch Linux 中文维基

跳转到内容

# 系统备份

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 System backup，最近一次同步于 2022-11-17，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

相关文章

- 同步和备份程序
- 系统维护#备份
- 静态数据加密#用于磁盘加密场景的数据备份
- 硬盘克隆
- 迁移到新硬件
- 文件恢复

系统备份是备份操作系统、文件和特定于系统的有用的/关键的数据的过程。（系统备份）主要确保除了系统中的用户数据，系统的状态或操作条件也已保存。这有助于使用选择的备份数据将系统恢复到之前保存的状态。[1]

## 使用 Btrfs 快照

详情请看 Btrfs#快照、#快照与 /boot 分区、Snapper、Timeshift 与 Yabsnap。

## 使用 LVM 快照

详情请看 LVM#Snapshots、Create root filesystem snapshots with LVM 和 #快照与 /boot 分区。

## 使用 rsync

详情请看 rsync#作为备份工具。

## 使用 tar

详情请看使用 tar 备份整个系统。

## 使用 SquashFS

详情请看 Full system backup with SquashFS。

## 可启动的备份

在文件系统损坏或系统因更新而损坏的情况下，有一个可启动的备份非常有用。备份还可以启用testing软件仓库，并用于测试更新。在您将系统迁移到不同的分区或驱动器之后，只需更新备份的 `/etc/fstab` 和引导加载程序的配置文件，就可以从迁移后的系统启动了。

在您在已将系统备份到另一个驱动器或分区，且当前的引导加载程序工作正常的情况下，接下来的操作将指导您如何从备份的系统启动。

### 更新 fstab

不需要重新启动，可以通过注释掉或删除任何现有条目来编辑备份的 fstab 文件。为包含备份的分区添加一个条目，如下例所示:

    /dev/sdaX    /             ext4      defaults                 0   1

记得使用正确的设备名和文件系统类型。

### 更新引导程序的配置文件

对于 Syslinux，你只需复制当前项目，不过使其指向不同的磁盘或分区。

提示：除了直接编辑 `syslinux.cfg`，您也可以在启动的时候临时编辑启动菜单。当显示启动菜单的时候，按 `Tab` 键来编辑对应的启动项。分区从1数起，而驱动器从0数起。

对于 GRUB，建议你自动重新生成主配置文件。如果你想将 GRUB 文件全新安装到 `/boot` 以外的位置（例如 `/mnt/newroot/boot`），使用 `--boot-directory` 标志。

请注意检查 `/boot/grub/grub.cfg` 中的启动项，确保其中的 UUID 与新分区相匹配，否则设备将仍然从原系统中启动。您可以通过 lsblk 命令来找到正确的UUID：

    $ lsblk -no NAME,UUID /dev/sdXY

`/dev/sdXY` 是您备份的目标分区 （比如 `/dev/sdb3`）要列出所有 GRUB 可启动的分区，请使用 grep 命令：

    # grep UUID= /boot/grub/grub.cfg

### 第一次启动

重启计算机并在引导程序中选择正确的项目。系统应该会在第一次启动的时候检测到所有外部设备并填充根目录下的空文件夹。

你现在可以编辑 `/etc/fstab`，将之前删除的分区和挂载点重新加入。

## 快照与 /boot 分区

如果你的文件系统支持快照（例如 LVM 和 Btrfs），这些快照将很可能不包含 `/boot` 分区或 EFI 系统分区。

进行内核升级时，您可以用 pacman hook 来把升级后的内核自动复制启动分区到 `root` 分区（请确保该钩子文件为 root 所有） :

    /etc/pacman.d/hooks/95-bootbackup.hook

    [Trigger]
    Operation = Upgrade
    Operation = Install
    Operation = Remove
    Type = Path
    Target = usr/lib/modules/*/vmlinuz

    [Action]
    Depends = rsync
    Description = Backing up /boot...
    When = PostTransaction
    Exec = /usr/bin/rsync -a --delete /boot /.bootbackup

分类：​

- 备份

系统备份
添加话题