清理$ HOME目录


17

几年中,在我的$HOME目录中出现了许多隐藏的文件和目录。

我想不断删除不需要的。

我如何找出哪些应用程序创建了这些隐藏的文件和目录。

如何确定删除隐藏文件和目录的安全性,并且重要的内容不会丢失,并且依赖它们的所有内容也不会停止工作?


2
确定哪些应用程序创建了文件夹和文件可能很棘手。通常,将与由体面的开发人员制作的应用程序关联的文件关联起来很简单,但这并非总是如此。如果您找到一个好的答案,我想知道这是什么。
2015年

2
@ 0xSheepdog审核了未来-历史,几乎没有。
珍妮D

删除文件之前,请确保已备份文件。(这包括验证您是否可以还原文件。)
Jenny D

1.您正在使用Linux吗?哪个内核版本?(请选择主要/次要)。2.是否启用了SELinux或可以启用它?3.您是否具有root用户访问权限?
Otheus

Answers:


15

您可以临时替换它们。

cd ~
mkdir .trash
find . ! -name . -prune ! -type d -atime +365 -exec \
    sh -c 'touch -a -- "$@"
           mv -- "$@" ~/.trash
    ' --   {} +

这样将查找$HOME目录中的所有文件-无需递归到子目录-已有一年没有被访问过。它将所有用户的访问时间更新为现在,然后将所有用户移动到名为的目录中.trash。如果在运行该文件与决定开始删除旧文件的时间之间遇到任何问题,~/.trash则可以尝试将其中的一些文件移回原位,以查看是否是您放入垃圾箱的原因。


尽管从技术上讲这还不能解决问题,但我认为这是一个很好的解决方法。
杰西·K

1
@JesseKeilson-我认为它确实从技术上回答了这个问题:如何确保删除隐藏的文件和目录是安全的,没有重要的东西会丢失,取决于它们的任何东西都不会停止工作?
mikeserv

1
某些文件系统使用“ noatime”选项挂载。即使更改了mtime或ctime,也不会修改atime。这将导致您发现错误地移动最近的文件。
Adrien M.

@AdrienM。- 确实如此。但是,总的来说,我接触到的每一个理智的fs都relatime改为使用。from man mount::relatime更新与修改或更改时间相关的inode访问时间。仅当先前的访问时间早于当前的修改或更改时间时,才更新访问时间。(类似于noatime,但是它不会中断,mutt或者其他应用程序需要知道自上次修改文件以来是否已读取文件。)无论如何,请使用modtime -m-mtime使其正常工作。或任何你喜欢的。
mikeserv 2015年

它不回答' 和目录的问题“部分对于你需要走各名为.directory,并检查所有文件都超过一年。
naught101

6

如果您是系统的超级用户,则可以使用审核内核功能来获得有关谁/何时/什么方式访问/创建/修改文件的最大信息。有关debian风格的示例,请参见本教程

如果没有root用户访问权限,则可以使用crontab或具有无限循环+睡眠的脚本在homedir中运行lsof和grep文件。请参见lsof的联机帮助页。但是,它仅显示启动lsof时打开了filedescriptor的应用程序。如果应用程序打开文件,对其进行编辑然后将其关闭,您将不会在lsof中看到此更改。

像这样的单线工作: lsof -u $(id -u) 2>/dev/null |grep -P $HOME'/[^\s]*$'

另一种方法是使用inotify 内核API来检查何时访问文件。las,这是一个异步系统,您将没有诸如“什么应用程序”,“准确何时”,“什么用户”之类的详细信息。您只会收到有关“此文件已被修改/访问...”的回调。一些应用程序(Inotify,FAM,gamin)可让您轻松访问api


我只是想用inotify触发器来触发lsof。系统实在太快了,无法实现这个想法:在运行lsof之前,该过程经常消失或关闭了文件。在某些情况下,这可能仍然有效,但可能很少。
Otheus

auditd这是唯一一个为您提供所有详细信息而又不丢失任何内容的系统,因为它使用了内核中的特定代码路径。所有其他工具将丢失信息,由于进程将终止/已关闭fd,因此将丢失数据。
Adrien M.

同意 我只是将inotify放入测试中,并确认它不会真正完成此处所需的工作。
Otheus

3

您可以查找atime并删除长时间不使用的文件(前提是您没有将系统配置为不使用一次),但这很有风险(请参阅tmpreaper是否要采用这种方式)。

相反,我建议使用Bleachbit,这是一个交互式GUI程序,可以消除残留问题。

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.