GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリハードリンクを強制的に作成しますか?

ほぼすべてのUNIXバージョンでディレクトリのハードリンクが許可されていない理由を理解しています(実際、OSX上のHFS+だけが私が知っているものですが、それでも自分で簡単に行うことはできません)。ただし、理論上、すべてのファイルシステムはハードリンクされたディレクトリをサポートします。これは、すべてのディレクトリに、それ自体への追加のハードリンクが少なくとも1つと、親を指すサブディレクトリに追加のハードリンクが含まれているためです。

ここで、ハードリンクは誤用すると危険である可能性があることに気付きました。ハードリンクは、ほとんどのプログラムがチェックしない循環構造を作成し、無限ループに陥る可能性があるためです。ただし、ハードリンクを使用して、任意のUNIXで機能するTimeMachineスタイルのバックアップを作成したいと考えていました。リンクは単に以前のバックアップを指しているだけなので、この種の構造が危険であるとは思いません。循環リンクのリスクはありません。私の場合、現在rsyncを使用して既存のファイルへのハードリンクを作成していますが、特に非常に大規模なバックアップの場合、特にどのディレクトリが変更されていないかをすでに知っている場合は、これは遅くて無駄です。

これを念頭に置いて、UNIXバリアントでディレクトリハードリンクの作成を強制する方法はありますか? ln これは、ディレクトリのハードリンクを防ぐために多くのUNIXフレーバーが制限を課している場所であり、lnであるため、おそらく適切ではありません。 ハードリンクされたディレクトリをサポートするバージョンは、操作が失敗する可能性が高いと具体的に述べています。しかし、リスクを知っていて、ユースケースが安全であることを知っている人にとって、とにかく実際にリンクを作成する方法はありますか?シェルスクリプトに最適ですが、それを実行するために小さなプログラムをコンパイルする必要がある場合は、できると思います。

承認された回答:

これをしないでください。スペースを節約するためにハードリンクを使用するバックアップシステムが必要な場合は、--link-destでrsyncを使用することをお勧めします 、ファイルをハードリンクします これが引き起こす問題を引き起こさずに、スペースを適切に節約します(つまり、ディレクトリ間のハードリンクはファイルシステムの破損であり、間違ったiノードカウントを報告します+ fsckに失敗します+一般にDAGではないため、意味が不明です。


Linux
  1. Linuxで複数のディレクトリを作成する5つの例

  2. Linuxでディレクトリの名前を変更する方法

  3. Unix / linuxでディレクトリへのハードリンクが許可されていないのはなぜですか?

  1. ディレクトリの下のすべてのディレクトリを小文字にしますか?

  2. ディレクトリへのハードリンクをシミュレートしますか?

  3. Linuxでソフトリンクとハードリンクを作成する方法

  1. Linuxでハードリンクとシンボリックリンクを作成する方法

  2. Ubuntu でディレクトリのシンボリック リンクを作成する

  3. ファイルを含む既存のツリーから新しい空のディレクトリ ツリーを作成する