确定用户修改的文件

确定用户修改的文件

我打算重新安装操作系统,因为我弄乱了一些东西。有时,访问文件和文件夹的速度非常慢,即使它们只包含几个文件。

但当然,我不想这样做一切再次。我记得添加了一些别名,以ssh使我的日常工作更加方便,我更改了一些语法突出显示文件,gedit可能比我目前记得的要多得多。

有没有办法轻松查看哪个文件由特定用户修改?或者,有没有办法找到在全新安装中找不到的文件?备份主目录中的内容很容易,但我不想搜索每个目录只是为了记住“哦,我也在那里放了一些东西”。

答案1

您可以轻松查找以下文件属于给特定用户:

find -xdev / -user bob

Unix 不记录谁修改了文件。

没有简单的方法可以找到已更改的系统文件。维护unix系统的正常方法是让操作系统管理自己的文件,并将自己的文件放在单独的目录中。在 Linux 上,约定是

  • /bin/sbin/lib/usr外部/usr/local仅属于分发;
  • /usr/local仅属于系统管理员;
  • /etc由分布填充,但可以由分布修改。

当然,您的主目录属于您。

当您执行诸如为 ssh 添加别名或为 Gedit 添加语法突出显示文件之类的操作时,/usr/local如果您希望它们可供所有用户使用,请执行此操作,否则请在您的主目录中执行此操作。

如果您确实需要更改下面的某些内容,/usr因为应用程序只查找那里的文件而不是下面的文件/usr/local,请将实际文件放在下面/usr/local并在下面创建一个符号链接/usr

为了跟踪您已更改的文件/etc,我建议等等管理员。所有好的发行版(包括)都提供它。 (如果您的发行版没有,请将此作为对您的发行版的评论。)

您可以去查找已从发行版提供的版本修改的文件。这对于每个包管理器来说都是不同的。既然你提到了Ubuntu,底层的包管理工具就是包装袋。对于每个包,都有一个文件列表及其校验和/var/lib/dpkg/info/PACKAGENAMES.md5sums。您可以将该列表与系统上安装的列表进行比较。

sort /var/lib/dpkg/info/*.md5sums >/tmp/packaged.md5sums
cd /
find bin etc lib sbin usr -path usr/local -prune -o -exec md5sum {} + | sort >/tmp/actual.md5sums
comm -23 /tmp/actual.md5sums /tmp/packages.md5sums

答案2

我记得为 ssh 添加了一些别名以使我的日常工作更加方便,我为 gedit 更改了一些语法突出显示文件,可能比我目前记得的要多得多。

如果我正确理解你的问题,这不是目录结构的全部要点吗/home?您所做的几乎所有每用户配置很可能都可以在您的主文件夹中找到。例如gedit,我敢打赌,.gedit您的主文件夹中有一个名为的文件夹,其中包含该软件的单独配置。

您可能不想恢复整个主文件夹,但至少如果您备份它,您可以稍后手动添加这些内容,就像当您发现 gedit 配置消失时,只需关闭 gedit 并复制到旧.gedit文件夹中即可 -等等。

为了保存文本文件更改的历史记录,您可能需要类似的东西等等管理员

答案3

如果可能的话,您可能希望保留现有安装,并在当前未使用的磁盘空间中进行全新安装(或备份到单独的(外部?)磁盘,然后重新安装。)

全新安装完成后,将旧安装安装在(例如) /old (或旧安装中的每个文件系统,例如 /old/root 、 /old/usr 、 /old/home 上,等),然后使用“diff -r //old”来帮助识别 /old 中存在但 / 中全新安装中不存在的文件。不同版本的已安装软件可能会出现大量误报。通过尝试安装完全相同的设置(发行版、操作系统版本、软件包选择)来最大限度地减少这些。这不是一个简单的方法,但应该是详尽无遗的 - 也许会让人筋疲力尽。祝你好运。

相关内容