さて、しばらく前に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
別の場所にテスト用のシンボリックリンク(ファイルを含むディレクトリ)を作成し、ディレクトリがあった場所にシンボリックリンクを移動しました
しかし、その後、ノーチラスはゲームに入ります:
Nautilusは、シンボリックリンクがディレクトリであることを理解しており、それらをマージすることを親切に提供してくれます。
今、それらをマージしました(明らかに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の予想される動作ですか、それともバグですか?
なぜ、どのようにこれが私に起こったのかは長い話ですが、ディレクトリ内にいくつかの非常に重要な(そして機密の)ファイルがありました。
それが可能かどうかわからない。結局のところ、空き領域はすべてiノードのリストです。
ただし、ext4の Orphan File 機能を参照してください。
私は答えを投稿しますが、それは受け入れません。なぜなら、それはどんな意味でも良いものではないと思われるからです(少なくとも効率または完全性の点で)。
これには recursivellyがディレクトリツリー全体を歩く のプログラムが必要で、参照されたすべてのiノードを順序付きリストに登録し(重複を回避)、実際のiノードと比較します。リスト。
違いは不足しているファイルです