問題タブ [hardlink]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ファイルのハード リンクを一覧表示する (C# の場合)
別のドライブのファイルをハード リンクで表示するプログラムを作成したいと考えています。
ファイル名などで両方のハードリンクの一貫性を保ちたいので、ファイルの現在のすべてのハードリンクをリストできる関数/メソッドを取得する必要があります。
例えば:
ファイルC:\file.txt
と への 2 つ目のハード リンクがありD:\file.txt
ます。
次に、名前を に変更D:\file.txt
しD:\file_new.txt
ます。
Cドライブのハードリンクの名前も変更できるようにしたいと考えています。
D:\file_new.txt
したがって、次のハードリンクがあることを返す関数が必要です。
次に、ハードリンクの名前を変更しC:\
て取得することもできますD:\file_new.txt
したがって、物理ファイルのすべてのハード リンクを取得する必要があります。または: ハード リンクでアドレス指定されたファイルのすべてのハード リンク。
誰かが助けてくれることを願っています!
編集:
Oliver は、異なるディスクではハード リンクを使用できないことに気付きました。ありがとう...だから私は質問を拡張します:何が必要ですか? ジャンクションポイント? シンボリックリンク? フォルダだけでなく、ファイルでも動作するはずです!
c# - C# - ファイルのハードリンクの場所を数えて一覧表示する
現在、ファイルのハードリンクの数とそのリンクの場所を読み取ることができる C# ソリューションを探しています。ファイルのプロパティに移動して、1 つのファイルのすべてのハードリンクを一覧表示することで、これを実行できるプログラム リンク シェル拡張機能を考えています。完全なディスクを検索せずに同じことを行うことができる C# コーダー向けのソリューションがあることを期待しています。
編集1:
2 つの HardLinks が同じファイルであるかどうかをテストする方法はありますか?
filesystems - FAT32 フォーマットのストレージ上のファイルシステム リンク
FAT32 も FAT16/12 もシンボリック リンクもハードリンクもサポートしていないことは知っています。しかし、私はこのアイデアを思いつきました:
FAT 仕様では、すべてのファイルがディレクトリ エントリに関連付けられていると説明されています。私の理解では、ディレクトリ内のファイルエントリは、何らかの形でファイルの内容を指していると言えます。
では、同じファイル コンテンツを指す 2 つのディレクトリ エントリを定義するにはどうすればよいでしょうか。または、私がそうするのを妨げるものは何ですか?
使用例:カー ラジオ用の USB 大容量ストレージ デバイスがあり、ラジオ ソフトウェアがプレイリストをサポートしていないため、ディレクトリをプレイリストとして使用したいと考えています。したがって、これを行うときに Windows がどのように動作するかは、私にとって重要ではありません。
winapi - 2 つの HANDLE が同じファイルへのハードリンクであるかどうかを調べる
(この質問は難しいです... NTFS の知識や NT ネイティブ API の使用が必要になる場合があります。注意してください。) :)
HANDLE
2 つのファイルに 2つの が与えられた場合、2 つの がまったく同じファイルに属しており、ディスク上でストリーミングされているかどうかを(高い確率でではなく)確実に確認するにはどうすればよいでしょうか?HANDLE
これは、たとえば、8 バイトの NTFS ファイル ID を確認するだけでは不十分であることを意味しHANDLE
ます。同じファイル ID を持つ 2 つの が同じファイルの異なるデータ ストリームを指している可能性があるためです。本当に同じで、名前だけが異なります (ハードリンク)。
(この方法では、フォルダー内のすべてのファイルに対して操作を実行する場合、同じデータ ストリームに対して異なる名前で操作を 2 回実行する必要はありません。)
windows - ntfsパーティションでLinuxからハードリンクを作成することは実行可能ですか?
実際に同じファイルをハードリンクすることでスペースを節約できるプログラムを見つけました。これにより、ファイルシステムにファイルのコピーを1つだけ残し、複数のハードリンクがそれを指すようにします。このプログラムはハードリンクと呼ばれます。
rsyncと増分バックアップについて知る前に、作成した古いバックアップ用にバックアップディスクのスペースを節約する方法をついに見つけたので、これは非常に便利です。
そのような長い紹介の後、どんな読者も質問を期待するでしょう、それでここにそれはあります:
ハードリンクを使用してntfsパーティションのスペースを節約するのは安全ですか?もちろん、ハードリンクは、上記のハードリンクプログラムを使用してLinuxから作成されます。より正確には、Windows(任意のバージョン)は、ハードリンクに置き換えられたはずのファイルを使用できますか?
どうもありがとう
linux - 多くのハード リンクを作成/削除することのデメリットは?
作成後すぐに削除される一時的なハード リンクまたはシンボリック リンクを数百から数千作成する必要があります。私の目的では、両方のタイプのリンクが機能します (つまり、ターゲットはディレクトリではなく、常に同じファイル システムに存在します)。
私が理解しているように、シンボリック リンクは元のファイルへのパスを含む小さなファイルを作成します。一方、ハードリンクは同じ inode 内のデータへの参照を作成します。したがって、これらのリンクを何千も作成/削除する場合は、何千もの小さなファイル (シンボリックリンク) またはこれらの参照 (ハードリンク) を何千も作成および削除する方がよいでしょうか? 1 つはハード ドライブ (おそらく断片化) に負担をかけ、もう 1 つはファイル システム自体に負担をかけるように見えますか? inode 参照はどこに保存されますか。あまりにも多くのハード リンクを作成すると、ファイル システムが破損する危険がありますか? 速度はどうですか?
あなたの専門知識をありがとう!
これは、ffmpeg を使用して、ディレクトリからの画像の任意のサブセットからムービーをエンコードできるようにするための回避策です。ffmpeg ではファイルに適切な名前を付ける必要があるため (frame%04d.jpg など)、ファイルのサブセットへのハード/シンボリック リンクを作成し、リンクに適切な名前を付けるだけでよいことに気付きました。これにより、元のファイルの名前を変更したり、実際にデータをコピーしたりする必要がなくなります。うまく機能しますが、何千ものリンクを繰り返し作成および削除する必要があります。
私が信じているこの問題にも対処します: ffmpegを使用して画像シーケンスを変換します
windows-xp - Windows XP のハード リンク
Windows XP でハード リンクを作成する方法はありますか? 私はこのリンクに出くわしましたが、最小限のビスタが必要だと言っています.リンクマジックソフトウェアを使用せずにそれを行う方法はありますか?
c++ - リンク数が2のときにiノードを完全に削除する方法はありますか?
現在、私のデータは、キャッシュディレクトリ(すべてのファイルが最初に作成または転送される場所)を持つボリュームに編成されています。その後、ボリューム上に適切なディレクトリがあり、そのサブディレクトリには、キャッシュ内のファイルにハードリンクされたファイルが含まれています。これは、同じiノード(ファイル)を複数のディレクトリで複数回ハードリンクできるようにするために行われます。
ボリュームをクリーンアップしようとすると、(キャッシュではなく)dirsを繰り返し調べ、特定の基準に基づいて、ファイルのリンクを解除します(これにより、基本的にキャッシュエントリのiノード数が1つ減ります)。最後のハードリンクを削除するときに、キャッシュエントリを直接削除する方法はありますか(つまり、カウントが2から1に減ります)。このようにして、キャッシュディレクトリ全体を手動で解析して、リンクカウントが1のiノードをクリアする必要がなくなります。
リンク解除/削除機能を実行しましたが、特定の用途が見つかりませんでした。これを内部的に処理するパージアルゴリズムはありますか?それなら、それを実装してみることができます。
これに関する助けをいただければ幸いです。迅速な返信を見越して。
msvcrt - MSVCRTの「ハードリンクの作成」機能の名前は何ですか?
この回答のバグを修正するには:MSVCRTでハードリンクを作成するための関数の正しい名前は何ですか?
linux - 別のリポジトリからマージ/プルするときにハードリンクを壊さないようにバージョン管理を強制しますか?
コードの一部が公開されているプロジェクトと公開されていないプロジェクトがあります。
私の事業体の完全なプロジェクトはフォルダーEにあり、特定のフォルダーPにはパブリック部分があります。Eフォルダー内の公開ファイルのPフォルダーにハードリンクを配置するのは良い考えだと思いました。
そのため、通常のワークフローは、エンタープライズバージョンのフォルダーEで作業し、ときどきフォルダーPに移動してパブリックファイルをコミットする必要があります。(私が「一人で」働く場合、それはうまくいくことに注意してください)
問題は、フォルダEのファイルのマージ/プル/リベースを実行すると、ファイルが置き換えられ、iノードが変更されるため、フォルダPにハードリンクされているファイルが更新されないことです。
だから私の質問は:マージ/プル/リベース時にファイルのiノードを変更しないオプションを許可するバージョン管理システムはありますか?
私はgit(またはgit-svn)を使用していますが、この便利なオプションに切り替えることに同意します。
ありがとう
ルイ
PS:私はこの質問(Gitとハードリンク)を見ましたが、ここではハードリンクを利用してより効率的に機能したいと思います。