maggio 10, 2017 – 5 min read

Ciao ancora. In questa introduzione agli hard link e ai link simbolici, cercheremo prima di imparare e definire il significato di ciascuno. Poi discuteremo le differenze tra i due.

Cos’è un hard link e cosa fa esattamente nella shell?

Un hard link è semplicemente un nome aggiuntivo per un file esistente su Linux o altri sistemi operativi Unix-like.

Ogni numero di hard link, e quindi ogni numero di nomi, può essere creato per ogni file. Gli hard link possono anche essere creati per altri hard link. Tuttavia, non possono essere creati per le directory, e non possono attraversare i confini del filesystem o passare attraverso le partizioni.

Forse l’applicazione più utile per gli hard link è permettere a file, programmi e script (cioè programmi brevi) di essere facilmente accessibili in una directory diversa dal file originale o dal file eseguibile (cioè, la versione di un programma pronta per l’esecuzione). Digitando il nome dell’hard link, il programma o lo script verrà eseguito allo stesso modo del suo nome originale. (http://www.linfo.org/hard_link.html)

Vuoi leggere questa storia più tardi? Salvatela in Journal.

Quindi cosa significa veramente questa definizione? Bene, puoi creare un hard link a un file esistente usando il comando ln nome_file hardlink. Ho fornito un esempio qui sotto della creazione di un hard link in azione. Nell’esempio qui sotto ho creato un hardlink aka un collegamento al file chiamato file1 con l’hardlink chiamato hlink1.

Ora lascia ls -i. In modo che elenchi tutti i file con inode.

INODE Definizione: L’inode è una struttura dati in un file system in stile Unix che descrive un oggetto del filesystem come un file o una directory. Ogni inode memorizza gli attributi e la posizione del blocco disco dei dati dell’oggetto. Gli attributi degli oggetti del filesystem possono includere metadati (tempi dell’ultimo cambiamento, accesso, modifica), così come i dati del proprietario e del permesso.

Le directory sono liste di nomi assegnati agli inode. Una directory contiene una voce per se stessa, il suo genitore e ciascuno dei suoi figli. (https://en.wikipedia.org/wiki/Inode)

Se guardate il file1 e l’hlink1 potete vedere che l’inode sul lato sinistro è lo stesso. In sostanza, gli hardlink agiscono come una scorciatoia per quel file che è hardlink.

Ora passiamo ai “Soft link”

I soft link sono un tipo speciale di file che punta ad un altro file, proprio come una scorciatoia. A differenza di un hard link, un link simbolico non contiene i dati nel file di destinazione. Semplicemente punta ad un’altra voce da qualche parte nel file system. Questa differenza dà ai collegamenti simbolici alcune qualità che gli hard link non hanno, come la capacità di collegarsi a directory o a file su computer remoti in rete tramite NFS. Inoltre, quando si cancella un file di destinazione, i collegamenti simbolici a quel file diventano inutilizzabili, mentre gli hard link conservano il contenuto del file. (https://kb.iu.edu/d/abbe)

Ora creiamo un soft link da confrontare con l’hard link che abbiamo creato sopra.

Apriamo un terminale. Andate nel finder o nella ricerca e inserite il terminale che dovrebbe apparire, cliccate su di esso e aprite.

Per il nostro esempio creiamo prima un file. Se digitiamo touch example1 premiamo invio. Possiamo creare un file. Ora per creare il soft link.

Se digitiamo nella shell ln -s example1 softlink1 creiamo un soft link tra i file. Vedi l’esempio qui sotto.

softlink

Ora se dovessimo digitare ls -i noteremo anche che solo il file hardlink ha lo stesso inode del hardlink mentre il file soft link ha inode diversi.

quali sono le differenze tra hard e soft link?

Un soft link non contiene i dati del file di destinazione.

Un soft link punta a un’altra voce da qualche parte nel file system.

Un soft link ha la capacità di collegarsi a directory, o a file su computer remoti in rete tramite NFS.

Eliminare un file di destinazione per un link simbolico rende quel link inutile.

Un hard link conserva il contenuto del file.

Un hard link non può essere creato per le directory, e non può attraversare i confini del filesystem o passare attraverso le partizioni.

In un hardlink è possibile utilizzare uno qualsiasi dei nomi hardlink creati per eseguire un programma o uno script nello stesso modo del nome originale dato.

In sostanza:

“Sotto il file system i file sono rappresentati da inode

Un file nel file system è fondamentalmente un collegamento a un inode.
Un hard link quindi crea semplicemente un altro file con un collegamento allo stesso inode sottostante.

Quando si cancella un file si rimuove un collegamento all’inode sottostante. L’inode viene cancellato (o cancellabile/sovrascrivibile) solo quando tutti i collegamenti all’inode sono stati cancellati.

Un collegamento simbolico è un collegamento a un altro nome nel file system.

Una volta che è stato fatto un collegamento fisso il collegamento è all’inode. Qualsiasi cambiamento ai dati sull’inode si riflette in tutti i file che fanno riferimento a quell’inode.

Nota: Gli hard link sono validi solo all’interno dello stesso File System. I collegamenti simbolici possono attraversare i file system, poiché sono semplicemente il nome di un altro file.”

(http://stackoverflow.com/questions/185899/what-is-the-difference-between-a-symbolic-link-and-a-hard-link)

Esaminare la Shell e come esegue un comando

  • La shell legge il suo input da un file, da una stringa o dal terminale dell’utente.
  • L’input è suddiviso in parole e operatori, obbedendo alle regole del quoting. Questi token sono separati da metacaratteri. Viene eseguita l’espansione degli alias.
  • La shell analizza (analizza e sostituisce) i token in comandi semplici e composti.
  • La shell esegue varie espansioni di shell, spezzando i token espansi in liste di nomi di file e comandi e argomenti.
  • Il reindirizzamento viene eseguito se necessario, gli operatori di reindirizzamento e i loro operandi vengono rimossi dalla lista degli argomenti.
  • I comandi vengono eseguiti.
  • Opzionalmente la shell attende il completamento del comando e raccoglie il suo stato di uscita.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.