NTFSファイルシステムでlsおよびstatによって報告されたハードリンクの数には、ハードリンクだけでなく他の種類のリンクも含まれますか?

NTFSファイルシステムでlsおよびstatによって報告されたハードリンクの数には、ハードリンクだけでなく他の種類のリンクも含まれますか?

NTFSは他のリンクタイプを計算するためにハードリンクと同じカウンタを使用しますか?それとも、NTFSファイルシステムのハードリンク数を計算するときに、Linuxに他のリンクタイプが含まれますか?

WindowsおよびLinux(fedora)で使用される外付けハードドライブにNTFSファイルシステムがあります。

一部のファイルのハードリンク数は2です。 「ls」と「stat」の出力例:

$ ls -li | grep samplefile.jpg 
1002 -rwxrwxrwx. 2 charlie charlie     29496 Apr 18  2019 samplefile.jpg
$ stat samplefile.jpg 
  File: samplefile.jpg
  Size: 29496       Blocks: 64         IO Block: 4096   regular file
Device: 811h/2065d  Inode: 1002        Links: 2

ただし、ファイルシステムには、ファイルシステムのルートで始まる「ls」と「find」からわかるように、同じinode番号(NTFSのファイルID)または同じ長さを参照する他のディレクトリエントリは含まれていません。

$ ls -Rli . | grep '1002\|29496'
1002 -rwxrwxrwx. 2 charlie charlie     29496 Apr 18  2019 samplefile.jpg
$ find . -samefile  path-to-file/samplefile.jpg 
./path-to-file/samplefile.jpg

私が知る限り、CanonのDPP4ソフトウェア(Digital Photo Professional)はファイルを修正し、save asハードリンク数= 2のファイルを生成しますexport。変更したファイルを同じ名前で保存しても、(save)ハードリンクの数は増えません。したがって、DPP4はソースファイルへの参照を保存し、NTFS(またはLinux)はその参照をハードリンクと見なします。しかし、これがハードリンクの数とどのような関係があるのか​​、DPPが使用するNTFSメカニズムが何であるか、またはハードリンクの数を計算するときにLinux(ヒューズ)に他のリンクタイプが含まれているのか、私が間違ったツリーを探しているのかを理解するできません。

Q:WindowsでもLinuxでもSamplefile.jpgを削除すると、使用回数が0ではないため、ファイルのデータは削除されませんか?回答:Linuxでは、ファイルデータは正しく削除されます。 (Windowsについてはわかりません。)証拠:Linuxでディレクトリエントリを削除し、削除されたrm filenameファイルのサイズを減らすためにスペースを使用しました。

注:以下の質問では、答えはls -l出力のハードリンクフィールドの意味を説明します。項目の種類によってはいくつかの意味がありますが、NTFSを明示的にターゲットにする答えはないことを指摘しています。

ls出力フィールドはどういう意味ですか?

これはMicrosoft NTFSのドキュメントです。古いですが、基本はまだ維持する必要があります。

NTFSファイルシステム

ベストアンサー1

歴史的にサポートされているNTFSファイルシステム8.3 ファイル名

この機能が有効になっている場合、Windowsでファイルを生成するプロセスは次のとおりです。

  • ファイル名が8.3パターンに従う場合、ファイル名は1つだけです。
  • そうでない場合(あなたのようなsamplefile.jpg)追加の「隠された」8.3の名前(あなたのものと同じ)を取得し、SAMPLE~1.JPG実際にはハードリンクです。

WindowsとLinuxでは、2つの名前でファイルを参照できますが、8.3の名前はリストに隠されています。したがってls、表示されていませんが、具体的SAMPLE~1.JPGls SAMPLE~1.JPG表示されました。

これがLinuxがハードリンク数を2と表示する理由です。名前を指定するとsample.jpg1が表示されます。

興味深いことに、LinuxでこのNTFSに長い名前のファイルを作成すると、8.3の名前は得られません。 Windowsでは、まだ長い名前で表示されます。

最後に、すべてのNTFSシステムがこの機能を有効にするわけではなく、一部のユーザーはWindowsのみを使用してもこの機能を無効にすることを好みます。

おすすめ記事