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


12

我正在将文件从一台Debian机器移至另一台机器,以便可以将旧机器用于其他目的。我不想丢失任何文件,因为我将无法恢复地格式化旧计算机的硬盘。

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

Answers:


16

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

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

安装:

apt-get install cruft

列出所有“脚本”,但忽略命名目录:

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

更多信息:

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

4

如果你没有做什么异常,那么答案是,一切都在/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或其他自定义位置的单独文件系统,请将其包括在备份中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.