Collegamenti simbolici vs scorciatoie di Windows?

Quali sono le differenze tra i link simbolici in scorciatoie di Ubuntu e Windows? Sono concetti analoghi? O c’è qualcosa in Ubuntu che assomiglia a più scorciatoie di Windows?

Sì e no.

Per comprendere i capricci qui, è necessario comprendere la relazione tra la tabella degli inode e i dati scritti sul disco.

Le scorciatoie di Windows sono dati di percorso contenuti in file normali. Pensa a loro come i file di testo che contengono solo un URI per un file. Da Wikipedia:

I collegamenti sono trattati come file ordinari dal file system e da programmi software che non ne sono a conoscenza. Solo i programmi software che comprendono scorciatoie (come la shell di Windows e i browser di file) li trattano come riferimenti ad altri file.

Un’altra differenza sono le funzionalità del meccanismo: le scorciatoie di Microsoft Windows normalmente si riferiscono a una destinazione da un percorso assoluto (a partire dalla directory radice), mentre i collegamenti simbolici POSIX possono fare riferimento a destinazioni tramite un percorso assoluto o relativo. Quest’ultimo è utile se la posizione e la destinazione del collegamento simbolico condividono un prefisso di percorso comune, ma quel prefisso non è ancora noto quando viene creato il collegamento simbolico (ad esempio, in un file di archivio che può essere decompresso ovunque).

I collegamenti alle applicazioni di Microsoft Windows contengono metadati aggiuntivi che possono essere associati alla destinazione, mentre i collegamenti simbolici POSIX sono solo stringhe che verranno interpretate come percorsi assoluti o relativi.

Windows Vista, 7 e 8 supportano anche i collegamenti simbolici in modo nativo in NTFS

I collegamenti simbolici conformi a POSIX non sono file. Invece, sono voci nella tabella degli inode che vengono automaticamente risolte dal file system. Qualsiasi programma software, all’accesso a un collegamento simbolico, vedrà invece l’objective, indipendentemente dal fatto che il programma sia a conoscenza di collegamenti simbolici o meno.

I collegamenti simbolici sono molto simili alle scorciatoie di Windows. Sono come un alias che punta all’object reale nel filesystem. Se l’object si sposta o viene eliminato, il collegamento si interrompe.

Sia Windows che Linux hanno collegamenti reali, che sono molto diversi. Non ho utilizzato Windows da XP e in quel momento non esisteva un’interfaccia utente per i collegamenti reali, ma c’era un’API e un’app poteva creare un collegamento reale (potrebbe anche essere eseguita da un utente che utilizza Cygwin).

Un hard link è un altro object a tutti gli effetti nel file system. Puoi avere più collegamenti e tutti agiscono allo stesso modo. Tutti puntano allo stesso deposito, però. Se ne elimini uno e l’altro sarà ancora esistente, l’archiviazione non verrà eliminata finché non cancelli tutti i collegamenti.