web-dev-qa-db-ja.com

$ HOMEディレクトリを消去する

数年の間、私の$HOMEディレクトリ多くの隠しファイルとディレクトリが表示されました。

不要なものは継続的に削除していきたいと思います。

どのアプリケーションがこれらの隠しファイルとディレクトリを作成したかを知るにはどうすればよいですか。

隠しファイルと隠しディレクトリを削除しても安全であり、重要なものが失われたり、それらに依存するものが停止しなかったりすることをどのように確認できますか?

17
xralf

一時的にそれらを置き換えることができます。

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

これにより、$HOMEディレクトリ内の子ディレクトリに再帰せずに、1年間アクセスされていないすべてのファイルが検索されます。それらすべてのアクセス時間を今すぐ更新し、それらすべてを.trashという名前のディレクトリに移動します。実行してから~/.trashの古いファイルを削除し始めるまでの間に問題が発生した場合は、それらのファイルのいくつかを元に戻して、ゴミ箱に入れたファイルが原因であるかどうかを確認できます。 。

15
mikeserv

システムのルートである場合、auditカーネル機能を使用して、誰が/いつ/何がアクセス/作成/変更されたファイルに関する最大の情報を得ることができます。 debian風味の例については、このチュートリアルを参照してください

Rootアクセス権がない場合は、crontabまたはスクリプトを無限ループ+スリープで使用して、ホームディレクトリでlsof&grepファイルを実行できます。 lsofのマンページを参照 。ただし、lsofを起動したときにファイル記述子が開かれているアプリケーションのみが表示されます。アプリケーションがファイルを開いて編集し、閉じた場合、lsofにこの変更は表示されません。

このようなワンライナーは仕事をするはずです:lsof -u $(id -u) 2>/dev/null |grep -P $HOME'/[^\s]*$'

別の方法は、inotifykernel API を使用して、ファイルがアクセスされていることを確認することです。悲しいかな、それは非同期システムであり、「どのアプリ」、「いつ」、「どのユーザー」のような詳細はありません。 「このファイルは変更またはアクセスされました...」に関するコールバックのみが発生します。一部のアプリケーション (Inotify、FAM、gamin) は、APIへの簡単なアクセスを提供します

6
Adrien M.

atimeを探して、長期間使用されていないファイルを削除することはできます(atimeを使用しないようにシステムを構成しなかった場合)が、かなり危険です(移動する場合はtmpreaperを参照してください)こちらです)。

代わりに、私は Bleachbit を提案します。

3