web-dev-qa-db-ja.com

iノードがどのディレクトリからも参照されていないファイルを見つける方法

さて、しばらく前にnautilusのバグと思われるものを見つけました。

/tmp$ mkdir test/
/tmp$ mkdir test2/
/tmp$ echo "very important stuff" > test/important-file.txt
/tmp$ ln -s /tmp/test/ test2/test

mv test2/test .を試してみると、bashは賢く答えられます:

mv: «test2/test» and «./test» identify the same file

別の場所にテスト用のシンボリックリンク(ファイルを含むディレクトリ)を作成し、ディレクトリがあった場所にシンボリックリンクを移動しました

しかし、その後、ノーチラスはゲームに入ります:

Moving symbolic link to the location where de directory is in nautilus

Nautilusは、シンボリックリンクがディレクトリであることを理解しており、それらをマージすることを親切に提供してくれます。

enter image description here

今、それらをマージしました(明らかに2つの異なるディレクトリだと思いました)。結果として...

tmp$ ls -la
lrwxrwxrwx  1 cool-user  best-group-ever      9 août  26 23:51 test -> /tmp/test

はい。そのため、ディレクトリを失い(上書きしたため正常です)、役に立たない円形のシンボリックリンクになりましたが、... important-file.txtで何が起こったのでしょうか?私のシステムのどのディレクトリからも参照されなくなったiノードがありました。

明らかに、私はポストイットでそのiノードを書いていません...だから、それはどこにありますか?。どのディレクトリからも参照されていないiノードを持つすべてのファイルを見つける方法はありますか?

そしておまけの質問として:これはnautilusの予想される動作ですか、それともバグですか?

なぜ、どのようにこれが私に起こったのかは長い話ですが、ディレクトリ内にいくつかの非常に重要な(そして機密の)ファイルがありました。

5
Luis Sieira

それが可能かどうかわからない。結局のところ、空き領域はすべてiノードのリストです。

ただし、ext4の Orphan File 機能を参照してください。

3
Serban

私は答えを投稿しますが、それは受け入れません。なぜなら、それはどんな意味でも良いものではないと思われるからです(少なくとも効率または完全性の点で)。

これには recursivellyがディレクトリツリー全体を歩く のプログラムが必要で、参照されたすべてのiノードを順序付きリストに登録し(重複を回避)、実際のiノードと比較します。リスト。

違いは不足しているファイルです

0
Luis Sieira