web-dev-qa-db-ja.com

ハードリンクは本当に多くのディスク容量を消費しますか?

エイリアス/シンボリックリンクを表示できない特定のプログラム(Ableton Live)でハードリンクを使用する必要があることがわかりました。これはもちろん、すべての作業ファイルを整理する方法です。しかし、ハードリンクを作成すると、元のファイルの複製のように見えるものが作成されます。

彼らは実際にオリジナルと同じくらいのスペースを取りますか?または、ファイルシステム(この場合はOSX)がディスク上の実際のデータのサイズを表示しているだけで、2か所で参照されているという事実は実際にはデータ量を2倍にしないのですか?

4
JVC

あなたが言った2番目のことは正確です。ファイルの内容は、ディスク上に一度だけ存在します。ハードリンクは追加の参照であり、スペースはほとんどかかりません。ディレクトリエントリのサイズは、ファイル名に数バイトを加えたものです。

これがOSXに当てはまるかどうかはわかりませんが、GNU coreutilsのバージョンで便利です。duはハードリンクを認識しているので、これを使用して取得できます。一連のファイルの合計サイズの正確なレポート。ファイルへの複数のリンクが見つかった場合は、合計に1回だけ追加されます。一方、ls -lは間違った処理を行い、表示されるすべてを追加しますtotal行のディレクトリ。

$ ls -sl
total 296
296 -rw-r--r-- 1 user group 300324 Feb 17 19:08 f1
$ du
296     .
$ ln f1 f2
$ ls -sl
total 592
296 -rw-r--r-- 2 user group 300324 Feb 17 19:08 f1
296 -rw-r--r-- 2 user group 300324 Feb 17 19:08 f2
$ du
296     .
$ cp f1 f3
$ ls -sl
total 888
296 -rw-r--r-- 2 user group 300324 Feb 17 19:08 f1
296 -rw-r--r-- 2 user group 300324 Feb 17 19:08 f2
296 -rw-r--r-- 1 user group 300324 Feb 17 19:08 f3
$ du
592     .
$

最終的なデモンストレーションは、ディスクのサイズの半分を超える巨大なファイルを作成することです。次に、それに作成できるハードリンクの数を確認します。かなりたくさんあるはずです。

6
user41515