我打算重新安装操作系统,因为我弄乱了一些东西。有时,访问文件和文件夹的速度非常慢,即使它们只包含几个文件。
但当然,我不想这样做一切再次。我记得添加了一些别名,以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 中存在但 / 中全新安装中不存在的文件。不同版本的已安装软件可能会出现大量误报。通过尝试安装完全相同的设置(发行版、操作系统版本、软件包选择)来最大限度地减少这些。这不是一个简单的方法,但应该是详尽无遗的 - 也许会让人筋疲力尽。祝你好运。