Bagaimana Anda membuat Hard Link yang berfungsi di OSX?

8

Ok, ini membuat saya membenturkan kepala. Di OS X, untuk membuat tautan keras, di jendela terminal, Anda seharusnya bisa mengetikkan ini ...

ln a.txt b.txt

... dan ini harus membuat tautan keras dari a.txtke b.txt. Sederhana dan lurus ke depan.

Ketika saya menjalankan pernyataan itu, tentu saja, di Finder b.txtmuncul tepat di sebelahnya a.txt. Namun, bahkan setelah diedit a.txtmenggunakan TextEdit, b.txtmasih memiliki data asli! Dengan kata lain, sepertinya itu dilakukan salinan, bukan tautan, keras atau sebaliknya.

Tidak masuk akal bagiku! Jadi bisakah seseorang memberi tahu saya apa yang saya lakukan salah di sini?

Mark A. Donohoe
sumber
Bagaimana Anda mengeditnya?
user151019
Saya baru saja membuka file di TextEdit dan menambahkan beberapa teks. Saya hanya memotong dan menyalin blok berulang-ulang. Dalam Finder, 'A.txt' sekarang memiliki ukuran yang berbeda dari 'b.txt' yang berarti mereka sebenarnya menunjuk ke dua file (data) yang berbeda pada disk.
Mark A. Donohoe
Ingin tahu. Saya baru saja mencoba ini menggunakan vi untuk mengedit file dan tautan tetap ada. Dengan TextEdit, seperti yang Anda amati, itu rusak.
Mengerikan
2
Pertimbangkan untuk mengedit pertanyaan Anda, mengingat asumsi Anda salah.
Daniel Beck
Jawabannya jelas menunjukkan bahwa hard-link, pada kenyataannya, berfungsi; judulnya menyarankan sebaliknya. Ini hanya perilaku penggantian file aplikasi OS X yang menghilangkan tautan keras Anda, yang merupakan masalah yang sama sekali berbeda.
Daniel Beck

Jawaban:

14

Alasan untuk perilaku ini agak mudah, dan ini berkaitan dengan bagaimana file disimpan di sebagian besar aplikasi Mac OS X: Secara atomis.

Apa yang terjadi adalah bahwa salinan file ditulis ke area pementasan sementara, dan kemudian dipindahkan untuk mengganti file asli.

Ini, tentu saja, mematahkan hubungan yang sulit.

Williham Totland
sumber
Ya ... sepertinya ada aplikasi OS X yang menggunakan pendekatan berbasis dokumen Cocoa. Itu benar-benar bau! Saya akan melihat apakah saya bisa menggunakan tautan lunak (alias) sebagai gantinya. Namun tidak yakin karena saya mengedit DefaultKeyBinding.dict yang digunakan sistem. Semoga cukup pintar untuk mengikuti tautan. Kita lihat saja nanti!
Mark A. Donohoe
Benar sekali. Ini juga mengapa mengedit file konfigurasi sistem Unix-y adalah masalah pada editor OS X GUI dan jauh lebih mudah dilakukan vi- tidak cukup untuk mengatur izin menulis pada file, Anda juga memerlukan folder!
Daniel Beck
BTW, soft-link tidak berfungsi, jadi saya kira saya kembali ke menyalin file skrip setelah menyimpan ke semua tempat yang saya butuhkan ini. Stinx!
Mark A. Donohoe
@MarqueIV: symlinks mungkin berfungsi.
Williham Totland
itu yang saya maksud. Ada istilah yang salah. Khususnya untuk binding kunci OS X. Itu mengharapkan file aktual berada di lokasi tertentu dan tidak bekerja dengan symlinks. Namun itu berfungsi dengan tautan keras, namun seperti yang dinyatakan, karena editor berbasis dokumen Kakao, saya tidak dapat mengedit file tanpa memutus tautan, jadi sepertinya saya harus menggunakan penyalinan secara manual (atau mengatur ulang tautan keras) setelah saya mengedit dokumen. Tidak optimal, tetapi skrip cepat tidak akan diperbaiki.
Mark A. Donohoe
3

Jika muncul, lihat entri ini dari superuser , bahwa ini adalah fitur dari TextEdit. Jadi, metode normal untuk membuat tautan keras benar, tetapi TextEdit berperilaku sedemikian rupa untuk memecahkan ini. (Tautan tersebut mengatakan bahwa ia membuat file baru dan kemudian memindahkannya ke file lama setelah diedit.)

membosankan
sumber
Ya ... baru saja melihatnya di SU tepat saat Anda memposting ini. Bukan hanya TextEdit juga. Tampaknya semua aplikasi berbasis dokumen. Bau karena ini berarti saya tidak dapat menggunakan alat berbasis dokumen untuk mengedit file yang ditautkan.
Mark A. Donohoe
itu bukan hanya TextEdit, tetapi semua aplikasi berbasis Kakao yang menggunakan arsitektur dokumen, yang kebanyakan dilakukan.
Mark A. Donohoe
2

Perhatikan bahwa emacs juga menunjukkan perilaku (mengejutkan!) Ini secara default (di semua unix), mengira penyebabnya sedikit berbeda (itu adalah "aman" untuk dilakukan dalam situasi ruang disk yang sangat rendah). Namun, dapat dikonfigurasi dalam beberapa cara.

Lihat dokumentasi untuk make-backup-files(gunakan C-h v make-backup-files) dan untuk

  • backup-by-coping
  • backup-by-coping-when-linked
  • backup-by-coping-when-mismatch
  • backup-by-coping-when-privileged-mismatch
dmckee --- mantan kucing moderator
sumber