apt:为了保护我的“apt”配置,我应该备份哪些目录?

apt:为了保护我的“apt”配置,我应该备份哪些目录?

我目前正在跑步Ubuntu 20.04.4 LTS

在过去的一两年里,我的apt数据库不知怎么就出问题了四次(我不知道是怎么回事),下次我运行aptapt-get和 时aptitude,系统提示我有超过 1,000 个软件包需要删除。如果我执行 并打算autoremove稍后重新安装,我的整个系统将无法使用,因为大多数正常的日常程序都会在 期间被删除autoremove

我做到了不是(!!!) 删除顶级桌面包,也不删除任何顶级包。发生此错误是因为某种原因(???我不知道是什么原因)以某种方式损坏了apt我机器上数据库的完整性。

每次我都能按照我在这个问题的“答案”中概述的步骤来解决这个问题:通过“apt autoremove”修复损坏的 apt,**且**不会破坏我的系统

但是,这种情况已经发生多次,这意味着无论什么原因导致这种情况都可能导致它再次发生。为了帮助解决这种情况(如果/当它再次发生时),我想知道以下内容...

apt如果我想在任何给定时间保留整个系统的状态,我应该备份系统上的哪些目录?我想定期备份所有这些相关目录,以便下次出现此错误时,我可以通过将这些目录恢复到其上次备份的版本来apt快速恢复我的环境。apt

感谢您对我应该备份哪些目录以保持整个apt环境的完整性所提供的任何指示和建议。

答案1

我有部分答案。安装时间移位

它会拍摄系统快照,并允许您恢复到以前的状态。我喜欢它,因为您可以创建每日计划并设置要保留多少天的恢复。'设置它并忘记它'

让我们知道这是否有帮助以及是否有足够好的解决方案。

apt-clone 似乎是一个选择,或者

如何备份设置和已安装软件包的列表

这里有一些信息,但还有很多其他的想法

因此,所有内容都可以作为伪 bash 脚本(可能是单行版本)

这假设机器上只有一个用户(否则删除 /'whoami')并且您在两个安装中使用了相同的用户名(否则修改 rsync 的目标)。

dpkg --get-selections > ~/Package.list && sudo cp -R /etc/apt/sources.list* ~/ && sudo apt-key exportall > ~/Repo.keys && rsync --progress /home/ whoami/path/to/user/profile/backup/here

立即重新安装

rsync --progress /path/to/user/profile/backup/here /home/ whoami&& sudo apt-key add ~/Repo.keys && sudo cp -R ~/sources.list* /etc/apt/ && sudo apt-get update && sudo apt-get install dselect && sudo dpkg --set-selections < ~/Package.list && sudo dselect

答案2

我发现这/var/lib/dpkg可能是我应该备份和恢复的目录树。

但是这专门针对aptdpkg,并且它不一定包含aptitude使用的一切,因为aptitude是一个建立在基础上的较新的实用程序apt

我将把这视为一个临时答案,直到我了解更多有关aptitude存储其自身数据的数据库的信息。

更新

我现在看到以下文件:/etc/cron.daily/dpkg和。它们分别执行数据库和数据库/etc/cron.daily/aptitude的备份。dpkgaptitude

所以,我的工作已经由操作系统完成了,如果我的apt环境再次受到攻击,我相信我可以通过从这些备份中恢复来恢复它。

向前!

相关内容