如何列出不由任何 DEB 包维护的文件和文件夹

如何列出不由任何 DEB 包维护的文件和文件夹

我正在将文件从一台 Debian 机器移到另一台,以便将旧机器用于其他用途。我不想错过任何文件,因为我将不可恢复地格式化旧机器的硬盘。

仔细考虑一下,我意识到我需要复制的所有文件和文件夹都不是由任何已安装的 Debian 软件包维护的。有没有一种简单的方法来列出此类文件和文件夹?

答案1

cruft正是用于此目的的一个有用工具:它对文件系统和已安装的 Debian 软件包的数据库进行比较。除了列出未知文件之外,它还列出了丢失但应该存在的文件。

debsums当我需要开始系统管理或升级我之前没有处理过的机器上的工作时,我经常使用它。这使我能够发现任何本地修改和安装并为其制定计划,而不是客户在升级后告诉我他们的软件不再工作。

安装:

apt-get install cruft

列出所有“cruft”但忽略指定目录:

cruft --ignore "/dev /proc /sys /root /home /tmp"

更多信息:

man cruft
zless /usr/share/doc/cruft/README.gz

答案2

如果您没有做过任何不寻常的事情,那么答案是/bin/boot/lib*和中的所有内容/sbin/usr来自 Debian 软件包,除了那/usr/local是您的;系统的其余部分是你的。您需要备份的典型位置是/home/etc(总是)、/var(大部分;例如/var/cache不需要备份)、/srv(如果您使用它)、以及/usr/local可能/opt

/要列出文件系统上非来自 Debian 软件包的常规文件:

find / -xdev -type f | sort >/tmp/root.list
sort /var/lib/dpkg/info/*.list >/tmp/dpkg.list
comm -23 /tmp/root.list /tmp/dpkg.list

如果您有单独的文件系统/usr,请将其包含在find命令中。如果您有单独的文件系统/home/var或其他自定义位置,请将其包含在您的备份中。

相关内容