Come si crea un Hard Link funzionante in OSX?


8

Ok, questo mi fa sbattere la testa. In OS X, per creare un collegamento reale, in una finestra terminale, dovresti essere in grado di digitare questo ...

ln a.txt b.txt

... e questo dovrebbe creare un collegamento reale da a.txta b.txt. Semplice e diretto.

Quando eseguo questa affermazione, abbastanza sicuro, in Finder b.txtappare proprio accanto a.txt. Tuttavia, anche dopo la modifica a.txtcon TextEdit, b.txti dati originali sono ancora disponibili! In altre parole, sembra che abbia eseguito una copia, non un collegamento, rigido o di altro tipo.

Non ha dannatamente senso per me! Quindi qualcuno può dirmi cosa sto facendo di sbagliato qui?


Come lo modifichi?
user151019

Ho appena aperto il file in TextEdit e ho aggiunto del testo. Ho appena tagliato e copiato un blocco ancora e ancora e ancora. Nel Finder, "A.txt" ora ha una dimensione diversa rispetto a "b.txt", il che significa che in realtà puntano a due diversi file (dati) sul disco.
Mark A. Donohoe,

Curioso. Ho appena provato questo usando vi per modificare i file e il collegamento persisteva. Con TextEdit, come vedi, si rompe.
terribile

2
Valuta la possibilità di modificare la tua domanda, dato che i tuoi presupposti erano sbagliati.
Daniel Beck

Le risposte mostrano chiaramente che i collegamenti reali, in effetti, funzionano; il titolo suggerisce il contrario. È solo il comportamento di sostituzione dei file delle applicazioni OS X che elimina i tuoi hard link, il che è un problema completamente diverso.
Daniel Beck

Risposte:


14

La ragione di questo comportamento è piuttosto semplice e riguarda il modo in cui i file vengono salvati nella maggior parte delle applicazioni Mac OS X: Atomicamente.

Ciò che accade è che una copia del file viene scritta in un'area di gestione temporanea temporanea e quindi spostata per sostituire il file originale.

Questo, abbastanza naturalmente, rompe i collegamenti duri.


Sì ... sembra essere qualsiasi app OS X che utilizza l'approccio basato su documenti di Cocoa. Puzza davvero! Vedrò invece se riesco a cavarmela usando soft-link (alias). Non sono sicuro però perché sto modificando un DefaultKeyBinding.dict utilizzato dal sistema. Spero che sia abbastanza intelligente da seguire il link. Vedremo!
Mark A. Donohoe,

Così vero. Questo è anche il motivo per cui la modifica dei file di configurazione del sistema Unix-y è una seccatura per gli editor della GUI di OS X ed è molto più facile da realizzare vi: non è sufficiente impostare le autorizzazioni di scrittura sul file, è anche necessaria la cartella!
Daniel Beck

A proposito, i soft-link non funzionano, quindi credo di essere tornato alle copie dei file di scripting dopo un salvataggio in tutti i luoghi in cui ho bisogno di questo. Stinx!
Mark A. Donohoe,

@MarqueIV: i collegamenti simbolici potrebbero funzionare.
Williham Totland,

Ecco cosa intendevo. Ho sbagliato il termine. In particolare, è per le combinazioni di tasti di OS X. Si aspetta che il file effettivo si trovi in ​​una posizione specifica e non funziona con i collegamenti simbolici. Funziona comunque con i collegamenti reali, tuttavia, come indicato, poiché l'editor è basato su documenti Cocoa, non posso modificare il file senza interrompere i collegamenti, quindi sembra che debba ricorrere alla copia manuale (o alla reimpostazione i collegamenti reali) dopo aver modificato il documento. Non ottimale, ma nulla può essere risolto da uno script veloce.
Mark A. Donohoe,

3

Se appare, vedi questa voce da superutente , che questa è una funzione di TextEdit. Pertanto, il metodo normale per la creazione di collegamenti reali è corretto, ma TextEdit si comporta in modo tale da romperlo. (Il collegamento dice che crea un nuovo file e quindi lo sposta sul vecchio file dopo la modifica.)


Sì ... l'ho appena visto su SU proprio mentre l'hai pubblicato. Non è solo TextEdit. Sembra essere tutte le app basate su documenti. Puzza perché questo significa che non posso usare strumenti basati su documenti per modificare file con collegamenti fisici.
Mark A. Donohoe,

non è solo TextEdit, ma tutte le applicazioni basate su Cocoa che utilizzano l'architettura del documento, cosa che la maggior parte fa.
Mark A. Donohoe,

2

Nota che emacs mostra anche questo comportamento (sorprendente!) Per impostazione predefinita (in tutti gli unix), ritenendo che la causa sia leggermente diversa (è la cosa "sicura" da fare in situazioni di spazio su disco molto basso). Tuttavia, può essere configurato in diversi modi.

Vedere la documentazione per make-backup-files(utilizzare C-h v make-backup-files) e per

  • backup-by-coping
  • backup-by-coping-when-linked
  • backup-by-coping-when-mismatch
  • backup-by-coping-when-privileged-mismatch
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.