# 备份和恢复

我们都熟知计算机有时会出问题，或者由于人为的错误导致系统和数据损坏。备份和恢复操作是成功的系统管理中非常重要的一部分。可能有一天你的电脑就会出问题

::: tip
保持你的备份系统简洁并且经常备份你的系统，有备份数据比你采用的备份方法的技术先进要重要的多
:::

## 备份和恢复策略

有3个关键的因素决定实际的备份和恢复策略。

1. 知道要备份和恢复什么。
   - 你自己创建的数据文件：在 "~/" 下的数据
   - 你使用的应用程序创建的数据文件：在 "/var/" 下的数据（除了 "/var/cache/"，"/var/run/" 和 "/var/tmp/")
   - 系统配置文件：在 "/etc/” 下的数据
   - 本地程序：在 "/usr/local/" 或 "/opt/" 下的数据
   - 系统安装信息：关键步骤 (分区,...) 的纯文本备忘录
   - 验证数据结果：通过实验性的恢复操作来预先验证
     - 用户进程的 Cron 工作，文件在 "/var/spool/cron/crontabs" 目录，并且重启 cron(8)。参见第 9.4.14 节 “定时任务安排”来获得关于 cron(8) 和 crontab(1) 的信息。
     - 用户进程的 Systemd 计时器工作：文件在 "~/.config/systemd/user" 目录。参见 systemd.timer(5) 和 systemd.service(5)。
     - 用户进程的自动启动工作：文件在 "~/.config/autostart" 目录。参见 Desktop Application Autostart Specification。
2. 知道怎样去备份和恢复。
   - 安全的数据存储：保护其免于覆盖和系统故障
   - 经常备份：有计划的备份
   - 冗余备份：数据镜像
   - 傻瓜式操作：单个简单命令备份
3. 评估涉及的风险和成本。
   - 数据丢失的风险
     - 数据至少是应该在不同的磁盘分区上，最好是在不同的磁盘和机器上，来承受文件系统发生的损坏。重要数据最好存储在一个只读文件系统上。[4]
   - 数据非法访问的风险
     - 敏感的身份数据，比如 "/etc/ssh/ssh_host_*_key", "~/.gnupg/*", "~/.ssh/*", "~/.local/share/keyrings/*", "/etc/passwd", "/etc/shadow", "popularity-contest.conf", "/etc/ppp/pap-secrets", and "/etc/exim4/passwd.client" 应当使用加密备份。[5] (参见 第 9.9 节 “数据加密提示”。)
     - 即使在信任的系统上，也不能够硬编码系统登录密码或者加密密码到任何脚本里面。(参见 第 10.3.6 节 “密码密钥环”。)
4. 数据丢失的方式及其可能性
   - 硬件（特别是硬盘）将会损坏
   - 文件系统可能会损坏，里面的数据可能被丢失
   - 对违规安全访问而言，远程存储系统不能够被信任
   - 弱的密码保护能够被轻松的破解
   - 文件权限系统可以被破解

5. 备份所需的资源：人力，硬件，软件，…
   - 使用 cron 任务或者 systemd 计时器任务来自动化调度备份工作

::: warning 注意
除非你知道自己做的是什么，否则不要备份 /proc, /sys, /tmp, 和 /run 目录下的伪文件系统（参见 第 1.2.12 节 “procfs 和 sysfs” 和 第 1.2.13 节 “tmpfs”)。它们是庞大且无用的数据。
:::

::: warning 注意
当备份数据的时候，你可能希望停止一些应用程序的守护进程例如 MTA（参见第 6.2.4 节 “邮件传输代理 (MTA)”）。
:::

## 实用备份套件


## 原子更新

原子更新是指在更新过程中，如果更新失败，系统能够自动回滚到更新前的状态。这样就能够保证系统的稳定性。

原子更新尚未全量提供，目前只提供了部分功能，后续会逐步完善。

TODO：https://github.com/linuxdeepin/deepin-upgrade-manager/tree/master/docs
