web-dev-qa-db-ja.com

システムから最近削除されたすべてのファイルを一覧表示するUNIXコマンドはありますか

誤ってrm -rfコマンドが現在のディレクトリではなくルートディレクトリに対して起動されました。ファイルの削除を停止しました Ctrl+C しかし、いくつかのファイルはすでに削除されています。影響を受けるアプリケーションを取得するために、システムから最近削除されたすべてのファイルを一覧表示するLINUXコマンドはありますか?

オペレーティングシステム:CentOS 6.3

6
Dig The Code

* nixシステムには通常、locateユーティリティがインストールされています。これには、通常は毎晩更新されるデータベースがあり、システム上の(ほぼ)すべてのファイルの名前が含まれています。ただ走れ:

locate /path/to/dir/of/interest

そして、最後のデータベース更新の時点でそのディレクトリにあったファイルのリストが表示されるはずです。これを現在のリストと比較することができます。

新しいバージョンで自動的に上書きされるため、今すぐそのデータベースのバックアップコピーを作成できます。 Debianの影響を受けたシステムでは、/var/lib/mlocate/mlocate.dbに保存されます。

不足しているファイルを表示する方法

  1. 古いデータベースのバックアップを作成します。

    cp /var/lib/mlocate/mlocate.db ~/old.db
    
  2. データベースを更新します。これを行うコマンドは異なる場合があります。 Debianのようなシステムでは、次のことを試してください。

    Sudo /etc/cron.daily/mlocate
    
  3. ディレクトリの新旧のファイルリストを取得します。

    locate -d ~/old.db /your/dir | sort >~/old.list
    locate /your/dir | sort >~/new.list
    
  4. すべての新規ファイルと欠落ファイルのリストを取得します。

    diff ~/old.list ~/new.list
    

その他の注意事項

  • すべてのファイルがlocateのデータベースにリストされているわけではありません。構成ファイル(通常は/etc/updatedb.conf)は、除外されるファイルとディレクトリを決定します。

  • 過去に、私はlocateのいくつかのバージョンを使用しました。これは、デフォルトでは、まだ存在するファイルのみをリストします。 locateの場合は、その機能をオフにする必要があります。

10
John1024

Archの場合、ひれの悪いファイルを誤って削除してしまったのではないかと心配していました... | xargs rm-rfコマンド形式。 John1024はアドバイスをありがとう。

すべてを単純化するために(私のWebディレクトリ/ srv/httpの場合)、これをすべて1行で実行します。

Sudo cp /var/lib/mlocate/mlocate.db ~/old.db; Sudo updatedb; Sudo locate -d ~/old.db /srv/http | sort >~/old.list; Sudo locate /srv/http | sort >~/new.list; Sudo diff ~/old.list ~/new.list;

/ srv/httpを問題のディレクトリに置き換えてください。

変更されたファイルが表示されます。再度、感謝します!

1
danielpflood