ハードリンクハードリンクファイル2セット

ハードリンクハードリンクファイル2セット

a_1からa_nまでのn個のファイルが互いにハードリンクされているとします。さらに、b_1からb_mまでm個のファイルがありますが、互いにハードリンクされています(ただし、a_*ファイルにはハードリンクされません)。

b_*ハードリンクをa_*ファイルとして指定する最も賢い方法は何ですか? b_1を繰り返して、それぞれをa_1として指定しますか?それともグループ全体をまとめる方法はありますか?

bファイルのいずれかを知っている場合は、どのようにb_*ファイルを検索できますか?つまり、特定のファイルにハードリンクされている他のすべてのファイルを見つける方法は何ですか?ファイル全体をスキャンするのではなく、Pythonを使用する方が良いですか?

ベストアンサー1

いいえ、一緒に変更することはできません。その理由は、関連する建設にあります。議論を容易にするために、文書は3つの部分に分かれています。

  • ファイル名
  • インデックスノード
  • ファイルデータ

ポインタが実行される場所file names --> inode --> file data。 inodeからファイル名を取得するバックポインタはありません。

inodeを指すファイル名を見つける唯一の方法は、ファイルシステム全体を検索して各ファイル名を解決することです(推奨されません)。

はい。各ハードリンクを1つずつ変更する必要があります。


重要なメモです。ハードリンクを見つけることはできませんが、どのくらいのリンクがあるかがわかります。 a_* または b_* にさらにハードリンクがあることを確認することをお勧めします。これにより、リンクの少ないファイルを選択して、すでにハードリンクが最も多いファイルを削除して追加できます。

ext3にはファイルあたり最大65,000のハードリンクがあることに注意してください。昨日、この問題が発生したため、これについて言及します。

おすすめ記事