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

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

ほとんどすべてのUNIXバージョンがディレクトリハードリンクを受け入れない理由を理解しています。実際、OS XのHFS +は私が知っている唯一のバージョンですが、自分で行うのは簡単ではありません。ただし、すべてのファイルシステムは理論的にハードリンクされたディレクトリをサポートします。これは、すべてのディレクトリには、1つ以上の追加のハードリンクが含まれており、親ディレクトリのサブディレクトリへの追加のハードリンクが含まれているためです。

今、私はハードリンクが誤用されると危険になる可能性があることに気づきました。ハードリンクはほとんどプログラムが確認できない循環構造を作って無限ループに陥ることができるからです。しかし、ハードリンクを使用してすべてのUNIXで動作するTime Machineスタイルのバックアップを作成したいと思います。リンクは単に以前のバックアップを指しているので、循環リンクのリスクがあってはならないので、この構造は危険ではないと思います。私の場合、現在rsyncを使用して既存のファイルへのハードリンクを作成しますが、これは特に大規模バックアップの場合、特にどのディレクトリが変更されていないかを既に知っている場合は遅くて無駄です。

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

ベストアンサー1

これをしないでください。スペースを節約するためにハードリンクを使用するバックアップシステムが必要な場合は、rsyncを一緒に使用することをお勧めします--link-dest文書問題を起こさずにスペースを適切に節約します(ディレクトリ間のハードリンクのためにファイルシステムが破損し、誤ったinodeの数を報告する可能性があります+ fsckが失敗しました+通常DAGではないため意味がわかりません)。

おすすめ記事