Mklinkを使用して、Windows 7ファイルシステムにハードリンクをいくつか作成しました。それは少し前のことで、どこにどのファイルがあったのか、はっきりとは思い出せません。エクスプローラを使用すると、すべてのファイルが同じように見えます。コマンドラインを使用して「dir」と入力すると、すべて同じように見えます。
ハードリンクを見つけるにはどうすればよいですか?または、特定のファイルISハードリンクかどうかをどのように判断しますか?
これがファイルが同じに見える理由です。それらは同じです。あなたが探しているように見えるのは、ファイルへのリンクが1つ以上あるファイルです。リンク数が1より大きいファイルとリンク数が1のファイルを区別するものはほとんどありません…リンク数(および属性と日付スタンプに関するいくつかの奇妙な動作)を除きます。
そして、thatは、Microsoftの SFUAユーティリティツールキット にあるfind
コマンドで簡単に確認できます。 Unixベースのアプリケーションの サブシステムで実行されます :
見つける。 -リンク+1
Windows 7では、次のコマンドを使用します。
fsutil hardlink list MyFileName.txt
MyFileName.txt
という名前のファイルへのすべてのハードリンクが一覧表示されます。
残念ながら、OSが各ファイルを確認せずにすべてのハードリンクを見つける方法はありません。
Explorerの場合、非常に便利な Link Shell Extension をダウンロードできます。これは、ハードリンクが付いたファイルに赤いショートカットのような矢印が付いたオーバーレイです。
また、エクスプローラーのコンテキストメニューからハードリンク、シンボリックリンク、ジャンクションを作成するのも簡単です。
ボーナスおしゃべり:
技術的には、すべてのファイルはハードリンクです。したがって、実際には複数のハードリンクを持つファイルを探しています。
finddupe を使用:
finddupe -listlink c:\photos
ファイルA
およびB
が同じコンテンツへのハードリンクであり、何もインストールまたは実行したくないかどうかをテストする場合は、Propertiesウィンドウを開きます。ファイルA
を変更し、たとえば読み取り専用属性を切り替えます。次に、ファイルB
の-Propertiesウィンドウを開いて、ここで(ファイルA
の)属性の変更が行われたかどうかを確認します。はいの場合、答えは肯定的です。
なぜこれが機能するのですか?関連するハードリンクが同じファイル属性とタイムスタンプのセットを共有しているためです。
そうは言っても、同じテストはファイルのタイムスタンプを使用して行うことができますが、チェックを実行するためにRead-onlyフラグほど簡単に変更することはできません。