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


16

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

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

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

非表示のファイルとディレクトリを削除しても安全であり、重要なものは何も失われず、それらに依存するものは動作を停止しないことをどのように確認できますか?


2
どのアプリケーションがフォルダーとファイルを作成したかを確認するのは難しい場合があります。通常、まともな開発者によって作成されたアプリに関連付けられたファイルの関連付けは簡単ですが、常にそうであるとは限りません。あなたが良い答えを見つけた場合、私はそれが何であるかを知りたいです。
-0xSheepdog

2
@ 0xSheepdogは将来を監査します-歴史上、ほとんど何もありません。
ジェニーD

削除する前に、ファイルのバックアップがあることを確認してください。(これには、ファイルを復元できることの確認が含まれます。)
ジェニーD

1. Linuxを使用していますか?どのカーネルバージョンですか?(メジャー/マイナーのみください)2. SELinuxは有効になっていますか、有効にできますか?3.ルートアクセス権はありますか?
オテウス

回答:


15

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

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

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


これは技術的には質問に答えませんが、かなり良い回避策だと思います。
ジェシーK

1
- @JesseKeilsonは、私はそれがだと思う:技術的質問に答えるどのように私は確信して、それは隠されたファイルやディレクトリを削除しても安全だと重要な何も失われることはありませんし、それらに応じて、何も動作を停止しないだろうということができますか?
mikeserv

1
一部のファイルシステムは「noatime」オプションでマウントされます。mtimeまたはctimeが変更されても、atimeは変更されません。これにより、最近のファイルが誤って移動される可能性があります。
エイドリアンM.

@AdrienM。- それは本当だ。概して、私がrelatime代わりに使用するすべての正気なfs 。from man mount::relatime変更または変更時間に関連するinodeアクセス時間を更新します。アクセス時刻は、前のアクセス時刻が現在の変更時刻または変更時刻よりも早い場合にのみ更新されます。(に似ていますが、ファイルが最後に変更されてから読み取られたかどうかを知る必要がある他のアプリケーションをnoatime壊しmuttたりしません。)とにかく、modtimeを使用-m-mtimeて作業します。またはあなたが好きなもの。
mikeserv

それは答えていないとディレクトリ質問の「一部を使用すると、各.directoryを歩く必要があり、すべてのファイルが一年以上経過したチェックしたいことのために。。
naught101

6

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

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

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

別の方法は、inotify カーネルAPIを使用して、ファイルにアクセスするタイミングをチェックすることです。残念ながら、これは非同期システムであり、「どのアプリ」、「正確なタイミング」、「どのユーザー」などの詳細はありません。「このファイルは変更/アクセスされました...」に関するコールバックのみがあります。一部のアプリケーション(Inotify、FAM、gamin)は、APIへの簡単なアクセスを提供します


inotifyトリガーに使用しようとしましたlsof。システムは、このアイデアが機能するには速すぎます:lsofを実行する前に、プロセスが頻繁になくなったり、ファイルを閉じたりします。場合によっては、これはまだ機能するかもしれませんが、おそらく非常に少数です。
オテウス

auditdこれは、カーネルで特定のコードパスを使用しているため、何も失わずにすべての詳細を提供する唯一のシステムです。他のすべてのツールは、情報が失われ、プロセスが終了する/ fdが閉じられるためデータが失われます。
エイドリアンM.

同意した。私はinotifyをテストに入れ、それが実際にここで必要な仕事をしないことを確認していました。
オテウス

3

atime長時間使用されていないファイルを検索して削除できます(atimeを使用しないようにシステムを構成しなかった場合)が、それはかなり危険です(tmpreaperこの方法を使用するかどうかを確認してください)。

代わりに、不要なものを削除するインタラクティブなGUIプログラムBleachbitをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.