web-dev-qa-db-ja.com

ファイルを見つける方法はハードリンクまたはシンボリックリンクですか?

~/file.txtにファイルがあります。

私はハードリンクを作成しました:

ln ~/file.txt ~/test/hardfile.txt

とシンボリックリンクファイル:

ln -s ~/file.txt ~/test/symfile.txt

さて、

  1. どのファイルがハードリンクであることを確認するにはどうすればよいですか?
  2. どのファイルがハードリンクをたどっているのかを確認するにはどうすればよいですか?

->でsymlinkファイルを見つけることができますが、ハードリンクはどうですか?

enter image description here

13
Hamed Kamrava
-rw--r--r-- 2 kamix users 5 Nov 17:10 hardfile.txt
            ^

それはファイルが持っているハードリンクの数です。 「ハードリンク」は、実際には2つのディレクトリエントリ間にあります。それらは実際には同じファイルです。 statからの出力を見るとわかります。

stat hardlink.file | grep -i inode
Device: 805h/2053d      Inode: 1835019     Links: 2

リンクの数は2であり、このファイルの別のリストがどこかにあることを示しています。これが別のファイルと同じファイルであることを知っている理由は、それらのiノード番号が同じだからです。他のファイルにはそれがありません。残念ながら、これは(iノード番号で)それらを見つける唯一の方法です。

this Q&Aには、inodeを使用してファイルを検索する方法(たとえば、findを使用する)に関する最良の方法がいくつかあります。

22
goldilocks

ハードリンクされたファイルには複数のリンク(2許可フラグの後)。 statコマンドを使用して、この情報を簡単に抽出できます。

$ stat --printf '%h\n' hardfile.txt
2

statman 1 stat)他の値とその印刷方法についての情報。

3
wurtel