我已经开始使用 rsync 工具从 Raspberry Pi 的 SD 卡备份数据。我使用的命令是:
sudo rsync -aAHXv --delete --exclude-from=/home/pi/rsync-exclude.txt / /media/pi/PI_BACKUP/
基于 @goldilocks 的优秀 stackexchange 帖子这里。
我可以看到它rsync
克隆了我的 SD 卡上的目录结构。当谈到从备份恢复时,我有几点需要解决并寻求澄清。
- 恢复文件或目录是我最满意的部分。我可以使用 rysnc 工具毫无问题地备份和恢复我的工作(文档、图像、脚本等)。但它能恢复已安装的软件吗?
- 我有类似的软件GNU 电台使用 Raspbian (Buster) 上的内置包管理器从软件存储库安装。该软件的安装非常耗时。我读过“Linux 中一切皆文件”。此外,我还了解到内置包管理器将在标准位置添加文件,例如
/usr/lib
或/opt
。这是否意味着将这些文件夹包含在根文件系统的备份副本中本身就足以在发生损坏时恢复软件(无需重新安装)? - 有些软件安装在包管理器之外。例如,我安装了 Arduino IDE。由于Linux中的一切都是文件,是否也可以通过将安装软件的文件夹包含在根文件系统的备份副本中来重新安装该软件?
还有这Linux 期刊中提出的解决方案似乎表明可以使用 rsync 备份和恢复整个系统。我很难理解这在 Raspberry Pi 的实践中是如何工作的。我的解释是,当 Pi 的 SD 卡损坏时,请执行以下操作:
- 从 USB 记忆棒启动 Pi(并非所有型号的 Pi 都支持。)
- 安装(损坏的)SD 卡和备份介质。
- 使用 rysnc 将根文件夹及其所有内容从备份介质恢复到原始 SD 卡。
很快!损坏的卡又恢复了生机,就像什么都没发生一样,所有软件和数据都完好无损。我的理解正确吗?如果原件损坏无法挽回怎么办?当涉及到 Linux 时,我充其量只是一个初学者,并且感谢任何帮助。
答案1
如果您需要创建某些文件/目录的备份,那么 Rsync 是一个很棒的工具 - 特别是如果需要备份许多很少更改的大文件(rsync 只会传输已更改的文件)。从技术上讲,你是对的,Linux 中的大部分内容都存储在文件系统上。备份(如果正确完成)将允许您恢复已安装的软件、配置、设备节点/dev/
等。但是,存在一些潜在的陷阱:
文件将被逐一复制,因此如果多个文件属于一起,它们可能最终会不同步。示例:您正在 Raspi 上运行照片库,在备份过程中,用户导入新图片,这会导致图片被写入文件系统,并且某些条目被写入单独的数据库文件。如果您的包含图片的目录恰好在备份的开头被复制,数据库在最后被复制,那么您最终可能会得到一个备份,其中的数据库包含新图片,但缺少相应的图像。这是否会引起严重的麻烦取决于您的软件的性质。
有些软件不能保证磁盘上的文件始终处于一致的状态。换句话说,如果您在编辑文件时备份该文件,则可能备份了损坏的文件。很可能你会没事,但关闭所有文件会更安全 - 对于操作系统而言,这意味着将其关闭。如果你不这样做,你的里程数就会不同。
您必须确保您的备份对于 Linux 系统使用的所有有趣的“文件”类型都能正常工作。例如,您可能需要注意 中的设备节点
/dev/
、 中的伪文件系统/proc/
和/sys/
以及引导过程中所需的文件。尝试恢复到新的 SD 卡以验证您的备份是否正常工作。一个完整的Linux系统有大量的文件。将它们同步到另一台计算机意味着将它们全部读取,这会大大减慢您的 Raspi 速度。
您是否考虑过组合
- 偶尔关闭您的 Raspi,以便在单独的计算机上对 SD 卡进行逐位备份(例如使用
dd
)并且 - 使用 rsync 定期将最重要的文件(例如 /home、从 /usr/local 或 /opt 中的源代码构建的软件)复制到另一台计算机?
- 将已安装软件包的列表转储到文件中,以便以后需要时可以轻松安装它们?
这样,您就可以将简单的逐位备份带来的安心与最重要文件的频繁自动备份的便利性结合起来,这种备份不太可能出错。