web-dev-qa-db-ja.com

OSXで機能するハードリンクをどのように作成しますか?

わかりました、これで頭を叩きました。 OS Xでは、ハードリンクを作成するために、ターミナルウィンドウで、これを入力するだけでよいはずです...

ln a.txt b.txt

...これにより、a.txtからb.txtへのハードリンクが作成されます。シンプルでわかりやすい。

そのステートメントを実行すると、確かに、Finderではb.txta.txtのすぐ横に表示されます。ただし、テキストエディットを使用してa.txtを編集した後でも、b.txtには元のデータが残っています。言い換えれば、ハードまたはその他の方法で、リンクではなくコピーを実行したように見えます。

私にはまったく意味がありません!だから誰かが私がここで間違っていることを教えてもらえますか?

8
Mark A. Donohoe

この動作の理由はかなり単純であり、ほとんどのMac OSXアプリケーションでファイルがどのように保存されるかに関係しています。

ファイルのコピーが一時ステージング領域に書き込まれ、元のファイルを置き換えるために移動されます。

これは、当然のことながら、ハードリンクを切断します。

14

が表示された場合は、 スーパーユーザーからのこのエントリ を参照してください。これはテキストエディットの機能です。したがって、ハードリンクを作成する通常の方法は正しいですが、テキストエディットはこれを破るような方法で動作します。 (リンクには、新しいファイルを作成し、編集後に古いファイルの上に移動することが示されています。)

3
borrible

Emacsもデフォルトで(すべてのUNIXで)この(驚くべき!)動作を示すことに注意してください。原因はわずかに異なります(ディスク容量が非常に少ない状況で行うのは「安全」なことです)。ただし、いくつかの方法で構成できます。

make-backup-filesC-h v make-backup-filesを使用)およびについては、ドキュメントを参照してください。

  • backup-by-coping
  • backup-by-coping-when-linked
  • backup-by-coping-when-mismatch
  • backup-by-coping-when-privileged-mismatch