{"id":3648,"date":"2026-07-20T13:47:45","date_gmt":"2026-07-20T11:47:45","guid":{"rendered":"https:\/\/rootmail.it\/courses\/lpic-1-exam-101-010-160-corso-completo-in-italiano\/lessons\/104-5-creare-e-gestire-hard-link-e-link-simbolici\/"},"modified":"2026-07-20T21:59:36","modified_gmt":"2026-07-20T19:59:36","slug":"104-5-creare-e-gestire-hard-link-e-link-simbolici","status":"publish","type":"lesson","link":"https:\/\/rootmail.it\/en\/courses\/lpic-1-exam-1-101-500-corso-completo-in-italiano\/lessons\/104-5-creare-e-gestire-hard-link-e-link-simbolici\/","title":{"rendered":"104.5 Creare e gestire hard link e link simbolici"},"content":{"rendered":"<h2>104.5 Creare e gestire hard link e link simbolici<\/h2>\n<p>In Linux, i file non contengono direttamente il nome con cui vengono visualizzati nel filesystem. Ogni file \u00e8 invece identificato da una struttura dati chiamata <strong>inode<\/strong>, che contiene tutte le informazioni sul file, come i permessi, il proprietario, la dimensione e la posizione dei dati sul disco.<\/p>\n<p>I <strong>link<\/strong> rappresentano riferimenti a questi inode e consentono di accedere allo stesso contenuto attraverso percorsi differenti. Linux supporta due tipologie di collegamenti:<\/p>\n<ul>\n<li><strong>Hard link<\/strong>, che rappresentano un ulteriore nome associato allo stesso inode.<\/li>\n<li><strong>Link simbolici (o soft link)<\/strong>, che funzionano come collegamenti a un percorso del filesystem.<\/li>\n<\/ul>\n<p>Comprendere le differenze tra questi due tipi di collegamento \u00e8 fondamentale per amministrare correttamente file e directory e rappresenta un argomento frequentemente trattato nell&#8217;esame LPIC-1.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> \u00c8 fondamentale conoscere le differenze tra hard link e link simbolici, sapere crearli con il comando <code>ln<\/code> e comprendere in quali situazioni utilizzare ciascuno di essi.<\/p><\/blockquote>\n<hr \/>\n<h2>\ud83c\udfaf Obiettivi della lezione<\/h2>\n<p>Al termine di questa lezione sarai in grado di:<\/p>\n<ul>\n<li>comprendere il ruolo degli inode nella gestione dei file;<\/li>\n<li>distinguere hard link e link simbolici;<\/li>\n<li>creare e rimuovere collegamenti utilizzando il comando <code>ln<\/code>;<\/li>\n<li>riconoscere i diversi tipi di link nell&#8217;output di <code>ls -l<\/code>;<\/li>\n<li>scegliere il tipo di collegamento pi\u00f9 adatto in base allo scenario.<\/li>\n<\/ul>\n<hr \/>\n<h2>Argomenti trattati<\/h2>\n<ul>\n<li>Cos&#8217;\u00e8 un inode.<\/li>\n<li>Hard link.<\/li>\n<li>Link simbolici (soft link).<\/li>\n<li>Creazione dei collegamenti con <code>ln<\/code>.<\/li>\n<li>Differenze tra hard link e link simbolici.<\/li>\n<\/ul>\n<blockquote><p><strong>\u2328\ufe0f Provalo subito<\/strong><br \/>\nApri un terminale ed esegui il comando <code>ls -li<\/code> all&#8217;interno di una directory contenente alcuni file. Osserva la prima colonna dell&#8217;output, che mostra il numero di inode associato a ciascun file. Durante questa lezione scoprirai perch\u00e9 pi\u00f9 file possono condividere lo stesso inode e quale ruolo svolgono gli hard link e i link simbolici.<\/p><\/blockquote>\n<h2>104.5.1 Comprendere gli hard link e i link simbolici<\/h2>\n<p>Linux permette di creare pi\u00f9 riferimenti allo stesso file mediante i <strong>link<\/strong>. Esistono due tipologie principali di collegamenti, ciascuna con caratteristiche e utilizzi differenti:<\/p>\n<ul>\n<li><strong>Hard link<\/strong> (collegamento fisico)<\/li>\n<li><strong>Link simbolico<\/strong> (o <em>soft link<\/em>)<\/li>\n<\/ul>\n<p>Sebbene entrambi consentano di accedere allo stesso contenuto, il loro funzionamento \u00e8 completamente diverso.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 fondamentale conoscere le differenze tra hard link e link simbolici, sapere quali limitazioni possiedono e comprendere il loro comportamento quando il file originale viene modificato, spostato o eliminato.<\/p><\/blockquote>\n<hr \/>\n<h3>Hard Link<\/h3>\n<p>Un <strong>hard link<\/strong> \u00e8 un ulteriore riferimento allo stesso <strong>inode<\/strong> del file originale.<\/p>\n<p>In pratica, non esiste un file &#8220;principale&#8221; e una sua copia: entrambi i nomi fanno riferimento allo stesso insieme di dati presente sul disco.<\/p>\n<p>Questo significa che:<\/p>\n<ul>\n<li>tutti gli hard link condividono lo stesso inode;<\/li>\n<li>qualsiasi modifica al contenuto \u00e8 immediatamente visibile attraverso tutti gli hard link;<\/li>\n<li>i dati vengono eliminati solo quando viene rimosso l&#8217;ultimo hard link che li riferisce.<\/li>\n<\/ul>\n<p>Ad esempio:<\/p>\n<pre><code>file_originale\r\n        \u2502\r\n        \u251c\u2500\u2500\u25ba inode 15236 \u2500\u2500\u2500\u25ba dati sul disco\r\n        \u2502\r\nhard_link\r\n<\/code><\/pre>\n<p>Entrambi i nomi puntano allo stesso inode.<\/p>\n<hr \/>\n<h3>Limitazioni degli hard link<\/h3>\n<p>Gli hard link presentano alcune importanti limitazioni:<\/p>\n<ul>\n<li>non possono collegare file appartenenti a filesystem differenti;<\/li>\n<li>normalmente non possono essere creati per le directory (per evitare cicli nel filesystem);<\/li>\n<li>funzionano esclusivamente con file regolari.<\/li>\n<\/ul>\n<p>Queste limitazioni derivano direttamente dal modo in cui gli inode vengono gestiti dal filesystem.<\/p>\n<hr \/>\n<h3>Link simbolico (Soft Link)<\/h3>\n<p>Un <strong>link simbolico<\/strong> funziona in modo completamente diverso.<\/p>\n<p>Non punta direttamente all&#8217;inode del file, ma memorizza semplicemente il <strong>percorso (pathname)<\/strong> del file di destinazione.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>link_simbolico\r\n        \u2502\r\n        \u25bc\r\n\/home\/mario\/documenti\/file.txt\r\n<\/code><\/pre>\n<p>Quando viene aperto il link, il sistema segue il percorso memorizzato e raggiunge il file originale.<\/p>\n<hr \/>\n<h3>Cosa succede se il file viene spostato?<\/h3>\n<p>Poich\u00e9 il link simbolico memorizza soltanto il percorso del file:<\/p>\n<ul>\n<li>se il file viene rinominato;<\/li>\n<li>se viene spostato;<\/li>\n<li>se viene eliminato;<\/li>\n<\/ul>\n<p>il collegamento non sar\u00e0 pi\u00f9 valido.<\/p>\n<p>In questo caso si parla di <strong>link simbolico interrotto<\/strong> (<em>broken link<\/em>).<\/p>\n<hr \/>\n<h3>Vantaggi dei link simbolici<\/h3>\n<p>A differenza degli hard link, i link simbolici:<\/p>\n<ul>\n<li>possono collegare file appartenenti a filesystem differenti;<\/li>\n<li>possono puntare a directory;<\/li>\n<li>possono persino puntare a file inesistenti (che verranno creati successivamente).<\/li>\n<\/ul>\n<p>Per questo motivo sono molto pi\u00f9 flessibili e vengono utilizzati frequentemente nell&#8217;amministrazione dei sistemi Linux.<\/p>\n<hr \/>\n<h3>Hard link e link simbolici a confronto<\/h3>\n<table>\n<thead>\n<tr>\n<th>Caratteristica<\/th>\n<th>Hard Link<\/th>\n<th>Link simbolico<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Punta a\u2026<\/td>\n<td>L&#8217;inode del file.<\/td>\n<td>Il percorso del file.<\/td>\n<\/tr>\n<tr>\n<td>Pu\u00f2 attraversare filesystem diversi?<\/td>\n<td>No.<\/td>\n<td>S\u00ec.<\/td>\n<\/tr>\n<tr>\n<td>Pu\u00f2 collegare directory?<\/td>\n<td>No (salvo casi particolari).<\/td>\n<td>S\u00ec.<\/td>\n<\/tr>\n<tr>\n<td>Funziona se il file viene spostato?<\/td>\n<td>S\u00ec.<\/td>\n<td>No.<\/td>\n<\/tr>\n<tr>\n<td>Condivide lo stesso inode?<\/td>\n<td>S\u00ec.<\/td>\n<td>No.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote><p><strong>\ud83d\udccc Da ricordare<\/strong> Un hard link rappresenta semplicemente un secondo nome dello stesso file e condivide lo stesso inode. Un link simbolico, invece, contiene solo il percorso del file e smette di funzionare se tale percorso non \u00e8 pi\u00f9 valido.<\/p><\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Utilizza gli hard link quando desideri creare pi\u00f9 riferimenti allo stesso file all&#8217;interno dello stesso filesystem. Preferisci invece i link simbolici quando devi collegare directory, attraversare filesystem differenti o creare collegamenti pi\u00f9 flessibili e facilmente gestibili.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>Gli hard link condividono lo stesso inode del file originale.<\/li>\n<li>I link simbolici memorizzano il percorso del file di destinazione.<\/li>\n<li>Gli hard link non possono attraversare filesystem differenti.<\/li>\n<li>I link simbolici possono puntare sia a file sia a directory.<\/li>\n<li>Se il file originale viene spostato o eliminato, un link simbolico pu\u00f2 diventare un collegamento interrotto.<\/li>\n<\/ul>\n<h2>104.5.2 Creare collegamenti con il comando <code>ln<\/code><\/h2>\n<p>In Linux il comando <code>ln<\/code> permette di creare sia <strong>hard link<\/strong> sia <strong>link simbolici<\/strong>. La tipologia di collegamento dipende dalle opzioni utilizzate.<\/p>\n<p>La sintassi \u00e8 semplice, ma \u00e8 importante comprendere quale tipo di link si sta creando e le relative implicazioni.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 essenziale ricordare che il comando <code>ln<\/code> crea un hard link, mentre <code>ln -s<\/code> crea un link simbolico.<\/p><\/blockquote>\n<hr \/>\n<h3>Creare un hard link<\/h3>\n<p>Per creare un hard link si utilizza:<\/p>\n<pre><code>ln file_originale hard_link\r\n<\/code><\/pre>\n<p>Ad esempio:<\/p>\n<pre><code>ln documento.txt copia_documento\r\n<\/code><\/pre>\n<p>In questo caso:<\/p>\n<ul>\n<li>viene creato un secondo nome per lo stesso file;<\/li>\n<li>entrambi i file condividono lo stesso inode;<\/li>\n<li>qualsiasi modifica effettuata tramite uno dei due nomi sar\u00e0 immediatamente visibile anche utilizzando l&#8217;altro.<\/li>\n<\/ul>\n<p>Verificando gli inode:<\/p>\n<pre><code>ls -li\r\n<\/code><\/pre>\n<p>si otterr\u00e0 un risultato simile:<\/p>\n<pre><code>15236 -rw-r--r-- 2 mario utenti documento.txt\r\n15236 -rw-r--r-- 2 mario utenti copia_documento\r\n<\/code><\/pre>\n<p>Il numero di inode \u00e8 identico, confermando che i due nomi fanno riferimento allo stesso file.<\/p>\n<hr \/>\n<h3>Creare un link simbolico<\/h3>\n<p>Per creare un link simbolico si utilizza l&#8217;opzione:<\/p>\n<pre><code>-s\r\n<\/code><\/pre>\n<p>La sintassi \u00e8:<\/p>\n<pre><code>ln -s percorso_destinazione nome_link\r\n<\/code><\/pre>\n<p>Ad esempio:<\/p>\n<pre><code>ln -s documento.txt collegamento\r\n<\/code><\/pre>\n<p>oppure:<\/p>\n<pre><code>ln -s \/home\/mario\/documenti\/documento.txt documento\r\n<\/code><\/pre>\n<p>In questo caso il nuovo file contiene semplicemente il percorso del file originale.<\/p>\n<hr \/>\n<h3>Visualizzare un link simbolico<\/h3>\n<p>Con il comando:<\/p>\n<pre><code>ls -l\r\n<\/code><\/pre>\n<p>un link simbolico appare in questo modo:<\/p>\n<pre><code>lrwxrwxrwx 1 mario utenti 13 Jan 10 15:00 collegamento -&gt; documento.txt\r\n<\/code><\/pre>\n<p>Si possono notare due elementi caratteristici:<\/p>\n<ul>\n<li>la prima lettera \u00e8 <code>l<\/code>, che identifica un link simbolico;<\/li>\n<li>la freccia <code>-&gt;<\/code> indica il file o la directory verso cui punta il collegamento.<\/li>\n<\/ul>\n<hr \/>\n<h3>Link assoluti e relativi<\/h3>\n<p>Un link simbolico pu\u00f2 essere creato utilizzando:<\/p>\n<ul>\n<li>un <strong>percorso assoluto<\/strong>;<\/li>\n<li>un <strong>percorso relativo<\/strong>.<\/li>\n<\/ul>\n<p>Esempio di percorso assoluto:<\/p>\n<pre><code>ln -s \/home\/mario\/documenti\/file.txt link.txt\r\n<\/code><\/pre>\n<p>Esempio di percorso relativo:<\/p>\n<pre><code>ln -s ..\/documenti\/file.txt link.txt\r\n<\/code><\/pre>\n<p>I percorsi relativi risultano spesso pi\u00f9 pratici quando si spostano intere directory mantenendo la stessa struttura.<\/p>\n<hr \/>\n<h3>Verificare un collegamento<\/h3>\n<p>Per controllare il tipo di collegamento creato si possono utilizzare:<\/p>\n<pre><code>ls -l\r\n<\/code><\/pre>\n<p>oppure:<\/p>\n<pre><code>ls -li\r\n<\/code><\/pre>\n<p>Nel caso degli hard link si osserver\u00e0 lo stesso numero di inode.<\/p>\n<p>Nel caso dei link simbolici verr\u00e0 invece mostrato il percorso della destinazione.<\/p>\n<hr \/>\n<h3>Confronto tra i due comandi<\/h3>\n<table>\n<thead>\n<tr>\n<th>Comando<\/th>\n<th>Tipo di collegamento creato<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>ln file link<\/code><\/td>\n<td>Hard link.<\/td>\n<\/tr>\n<tr>\n<td><code>ln -s file link<\/code><\/td>\n<td>Link simbolico.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote><p><strong>\ud83d\udccc Da ricordare<\/strong> Il comando <code>ln<\/code> senza opzioni crea sempre un <strong>hard link<\/strong>. Per creare un <strong>link simbolico<\/strong> \u00e8 necessario utilizzare l&#8217;opzione <code>-s<\/code>.<\/p><\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Nella maggior parte degli scenari amministrativi \u00e8 consigliabile utilizzare i link simbolici, poich\u00e9 sono pi\u00f9 flessibili e possono collegare file appartenenti a filesystem differenti o intere directory. Gli hard link sono invece particolarmente utili quando si desidera creare pi\u00f9 riferimenti allo stesso file senza duplicarne il contenuto.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li><code>ln<\/code> crea un hard link.<\/li>\n<li><code>ln -s<\/code> crea un link simbolico.<\/li>\n<li>Gli hard link condividono lo stesso inode del file originale.<\/li>\n<li>I link simbolici memorizzano il percorso del file di destinazione.<\/li>\n<li>I comandi <code>ls -l<\/code> e <code>ls -li<\/code> permettono di verificare il tipo di collegamento creato.<\/li>\n<\/ul>\n<h2>104.5.3 Identificare i collegamenti con <code>ls<\/code><\/h2>\n<p>Dopo aver creato un hard link o un link simbolico, \u00e8 spesso necessario verificare il tipo di collegamento e le sue caratteristiche. Linux mette a disposizione il comando <code>ls<\/code>, che consente di identificare facilmente entrambi i tipi di link.<\/p>\n<p>Utilizzando le opzioni appropriate \u00e8 possibile distinguere un link simbolico da un file normale e verificare quanti hard link fanno riferimento allo stesso inode.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante saper riconoscere un link simbolico dall&#8217;output di <code>ls -l<\/code> e interpretare il contatore degli hard link mostrato nella seconda colonna.<\/p><\/blockquote>\n<hr \/>\n<h3>Visualizzare informazioni dettagliate<\/h3>\n<p>Per ottenere informazioni complete su file e directory si utilizza:<\/p>\n<pre><code>ls -l\r\n<\/code><\/pre>\n<p>L&#8217;output mostra:<\/p>\n<ul>\n<li>tipo di file;<\/li>\n<li>permessi;<\/li>\n<li>numero di hard link;<\/li>\n<li>proprietario;<\/li>\n<li>gruppo;<\/li>\n<li>dimensione;<\/li>\n<li>data di modifica;<\/li>\n<li>nome del file.<\/li>\n<\/ul>\n<hr \/>\n<h3>Riconoscere un link simbolico<\/h3>\n<p>Un link simbolico viene identificato immediatamente dal primo carattere della prima colonna.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>lrwxrwxrwx 1 mario utenti 13 Jan 10 15:00 collegamento -&gt; documento.txt\r\n<\/code><\/pre>\n<p>In questo esempio:<\/p>\n<ul>\n<li>la lettera <code>l<\/code> indica che si tratta di un link simbolico;<\/li>\n<li>la freccia <code>-&gt;<\/code> mostra il percorso della destinazione.<\/li>\n<\/ul>\n<p>Se il file di destinazione viene eliminato o spostato, il link continuer\u00e0 a essere visualizzato, ma punter\u00e0 a un percorso non pi\u00f9 valido.<\/p>\n<hr \/>\n<h3>Riconoscere un hard link<\/h3>\n<p>Gli hard link non possiedono un simbolo speciale.<\/p>\n<p>Appaiono come normali file:<\/p>\n<pre><code>-rw-r--r-- 2 mario utenti 2048 Jan 10 15:00 documento.txt\r\n<\/code><\/pre>\n<p>La differenza \u00e8 rappresentata dalla <strong>seconda colonna<\/strong>.<\/p>\n<p>Nel nostro esempio:<\/p>\n<pre><code>2\r\n<\/code><\/pre>\n<p>indica che esistono due hard link che fanno riferimento allo stesso inode.<\/p>\n<p>Ogni volta che viene creato un nuovo hard link, questo numero aumenta.<\/p>\n<hr \/>\n<h3>Visualizzare gli inode<\/h3>\n<p>Per verificare che due file condividano realmente lo stesso inode si utilizza:<\/p>\n<pre><code>ls -li\r\n<\/code><\/pre>\n<p>Ad esempio:<\/p>\n<pre><code>15236 -rw-r--r-- 2 mario utenti documento.txt\r\n15236 -rw-r--r-- 2 mario utenti copia_documento\r\n<\/code><\/pre>\n<p>Entrambi i file presentano:<\/p>\n<ul>\n<li>lo stesso numero di inode (<code>15236<\/code>);<\/li>\n<li>lo stesso contatore di hard link (<code>2<\/code>).<\/li>\n<\/ul>\n<p>Questo conferma che non si tratta di una copia del file, ma di due nomi differenti che fanno riferimento allo stesso contenuto.<\/p>\n<hr \/>\n<h3>Interpretare la seconda colonna<\/h3>\n<p>Nell&#8217;output di <code>ls -l<\/code>, la seconda colonna rappresenta il numero di hard link associati all&#8217;inode.<\/p>\n<p>Ad esempio:<\/p>\n<table>\n<thead>\n<tr>\n<th>Valore<\/th>\n<th>Significato<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>1<\/code><\/td>\n<td>Esiste un solo riferimento al file.<\/td>\n<\/tr>\n<tr>\n<td><code>2<\/code><\/td>\n<td>Esistono due hard link che condividono lo stesso inode.<\/td>\n<\/tr>\n<tr>\n<td><code>3<\/code><\/td>\n<td>Tre nomi fanno riferimento allo stesso file.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Il numero diminuisce automaticamente quando un hard link viene eliminato.<\/p>\n<hr \/>\n<h3>Confronto tra hard link e link simbolici<\/h3>\n<table>\n<thead>\n<tr>\n<th>Caratteristica<\/th>\n<th>Hard Link<\/th>\n<th>Link simbolico<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Prima lettera di <code>ls -l<\/code><\/td>\n<td><code>-<\/code> (file normale)<\/td>\n<td><code>l<\/code><\/td>\n<\/tr>\n<tr>\n<td>Freccia <code>-&gt;<\/code><\/td>\n<td>No<\/td>\n<td>S\u00ec<\/td>\n<\/tr>\n<tr>\n<td>Numero di inode<\/td>\n<td>Condiviso con il file originale.<\/td>\n<td>Diverso dal file di destinazione.<\/td>\n<\/tr>\n<tr>\n<td>Seconda colonna<\/td>\n<td>Indica il numero di hard link.<\/td>\n<td>Generalmente vale 1.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote><p><strong>\ud83d\udccc Da ricordare<\/strong> Un link simbolico \u00e8 facilmente riconoscibile perch\u00e9 la prima lettera dell&#8217;output di <code>ls -l<\/code> \u00e8 <code>l<\/code> e viene mostrata la freccia <code>-&gt;<\/code>. Gli hard link, invece, si identificano osservando il numero di inode con <code>ls -li<\/code> oppure il contatore degli hard link nella seconda colonna.<\/p><\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Quando lavori con hard link, utilizza sempre <code>ls -li<\/code> per verificare che i file condividano effettivamente lo stesso inode. Se invece utilizzi link simbolici, controlla periodicamente che il percorso di destinazione sia ancora valido per evitare collegamenti interrotti.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li><code>ls -l<\/code> permette di identificare hard link e link simbolici.<\/li>\n<li>Un link simbolico \u00e8 identificato dalla lettera <code>l<\/code> e dalla freccia <code>-&gt;<\/code>.<\/li>\n<li>La seconda colonna di <code>ls -l<\/code> indica il numero di hard link associati a un inode.<\/li>\n<li><code>ls -li<\/code> mostra il numero di inode, utile per verificare gli hard link.<\/li>\n<li>Pi\u00f9 hard link condividono lo stesso inode e gli stessi dati sul disco.<\/li>\n<\/ul>\n<h2>104.5.4 Copiare file o creare collegamenti?<\/h2>\n<p>Quando si desidera rendere disponibile un file in pi\u00f9 posizioni del filesystem, Linux offre diverse possibilit\u00e0. Le due pi\u00f9 comuni sono la <strong>copia del file<\/strong> e la <strong>creazione di un collegamento (link)<\/strong>.<\/p>\n<p>Sebbene il risultato possa sembrare simile, queste operazioni funzionano in modo molto diverso e hanno conseguenze differenti in termini di spazio occupato, gestione dei dati e comportamento delle modifiche.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere la differenza tra una copia e un hard link, comprendendo il ruolo degli inode e il motivo per cui una copia occupa nuovo spazio su disco mentre un hard link no.<\/p><\/blockquote>\n<hr \/>\n<h3>Copiare un file<\/h3>\n<p>Quando si utilizza il comando:<\/p>\n<pre><code>cp documento.txt copia.txt\r\n<\/code><\/pre>\n<p>Linux crea:<\/p>\n<ul>\n<li>un nuovo inode;<\/li>\n<li>una nuova copia dei dati sul disco.<\/li>\n<\/ul>\n<p>Di conseguenza:<\/p>\n<ul>\n<li>il file originale e la copia sono completamente indipendenti;<\/li>\n<li>le modifiche apportate a uno dei due file non influenzano l&#8217;altro;<\/li>\n<li>viene occupato ulteriore spazio sul disco.<\/li>\n<\/ul>\n<p>Ad esempio:<\/p>\n<pre><code>documento.txt\r\n        \u2502\r\n        \u25bc\r\ninode 15236 \u2500\u2500\u2500\u25ba dati A\r\n\r\ncopia.txt\r\n        \u2502\r\n        \u25bc\r\ninode 18310 \u2500\u2500\u2500\u25ba dati A (duplicati)\r\n<\/code><\/pre>\n<p>Anche se inizialmente il contenuto \u00e8 identico, si tratta di due file distinti.<\/p>\n<hr \/>\n<h3>Creare un hard link<\/h3>\n<p>Con il comando:<\/p>\n<pre><code>ln documento.txt collegamento\r\n<\/code><\/pre>\n<p>non viene creata alcuna copia dei dati.<\/p>\n<p>Entrambi i nomi fanno semplicemente riferimento allo stesso inode.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>documento.txt\r\n        \u2502\r\n        \u251c\u2500\u2500\u25ba inode 15236 \u2500\u2500\u2500\u25ba dati A\r\n        \u2502\r\ncollegamento\r\n<\/code><\/pre>\n<p>In questo caso:<\/p>\n<ul>\n<li>non viene occupato ulteriore spazio per i dati del file;<\/li>\n<li>qualsiasi modifica effettuata tramite uno dei due nomi sar\u00e0 immediatamente visibile anche dall&#8217;altro;<\/li>\n<li>i dati verranno eliminati solo quando sar\u00e0 rimosso l&#8217;ultimo hard link.<\/li>\n<\/ul>\n<hr \/>\n<h3>Cosa succede dopo una modifica?<\/h3>\n<p>Supponiamo di modificare il file originale.<\/p>\n<p>Con una copia:<\/p>\n<pre><code>documento.txt   \u2192 contenuto modificato\r\ncopia.txt       \u2192 contenuto invariato\r\n<\/code><\/pre>\n<p>Con un hard link:<\/p>\n<pre><code>documento.txt   \u2192 contenuto modificato\r\ncollegamento    \u2192 stesso contenuto modificato\r\n<\/code><\/pre>\n<p>Entrambi i nomi visualizzano sempre gli stessi dati perch\u00e9 condividono lo stesso inode.<\/p>\n<hr \/>\n<h3>Spazio occupato sul disco<\/h3>\n<p>Una copia richiede nuovo spazio di archiviazione.<\/p>\n<p>Un hard link, invece, utilizza soltanto una nuova voce nella directory e non duplica il contenuto del file.<\/p>\n<p>Per questo motivo gli hard link risultano molto efficienti quando si desidera avere pi\u00f9 riferimenti allo stesso file.<\/p>\n<hr \/>\n<h3>Copia e hard link a confronto<\/h3>\n<table>\n<thead>\n<tr>\n<th>Caratteristica<\/th>\n<th>Copia (<code>cp<\/code>)<\/th>\n<th>Hard Link (<code>ln<\/code>)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Nuovo inode<\/td>\n<td>S\u00ec.<\/td>\n<td>No.<\/td>\n<\/tr>\n<tr>\n<td>Nuovi dati sul disco<\/td>\n<td>S\u00ec.<\/td>\n<td>No.<\/td>\n<\/tr>\n<tr>\n<td>Occupa spazio aggiuntivo<\/td>\n<td>S\u00ec.<\/td>\n<td>No (salvo il riferimento nella directory).<\/td>\n<\/tr>\n<tr>\n<td>Le modifiche sono condivise?<\/td>\n<td>No.<\/td>\n<td>S\u00ec.<\/td>\n<\/tr>\n<tr>\n<td>I file sono indipendenti?<\/td>\n<td>S\u00ec.<\/td>\n<td>No.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>Quando utilizzare una copia?<\/h3>\n<p>La copia \u00e8 preferibile quando:<\/p>\n<ul>\n<li>si desidera modificare il nuovo file senza alterare l&#8217;originale;<\/li>\n<li>si vuole conservare una versione indipendente del documento;<\/li>\n<li>\u00e8 necessario creare un backup.<\/li>\n<\/ul>\n<hr \/>\n<h3>Quando utilizzare un hard link?<\/h3>\n<p>Un hard link \u00e8 indicato quando:<\/p>\n<ul>\n<li>si desiderano pi\u00f9 nomi per lo stesso file;<\/li>\n<li>si vuole evitare di duplicare i dati sul disco;<\/li>\n<li>si lavora all&#8217;interno dello stesso filesystem.<\/li>\n<\/ul>\n<blockquote><p><strong>\ud83d\udccc Da ricordare<\/strong> Una copia crea un nuovo file con un nuovo inode e occupa nuovo spazio sul disco. Un hard link, invece, crea semplicemente un nuovo riferimento allo stesso inode, senza duplicare i dati.<\/p><\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Utilizza il comando <code>cp<\/code> quando hai bisogno di una copia completamente indipendente del file. Se invece vuoi creare pi\u00f9 riferimenti allo stesso contenuto senza occupare spazio aggiuntivo, preferisci un hard link, purch\u00e9 i file risiedano nello stesso filesystem.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>Il comando <code>cp<\/code> crea un nuovo inode e una nuova copia dei dati.<\/li>\n<li>Il comando <code>ln<\/code> crea un hard link che condivide lo stesso inode del file originale.<\/li>\n<li>Una copia occupa nuovo spazio sul disco.<\/li>\n<li>Un hard link non duplica i dati e condivide tutte le modifiche con il file originale.<\/li>\n<li>La scelta tra copia e collegamento dipende dall&#8217;utilizzo previsto del file.<\/li>\n<\/ul>\n<h2>104.5.5 Utilizzare i collegamenti nell&#8217;amministrazione di sistema<\/h2>\n<p>Gli hard link e i link simbolici non sono semplici strumenti per creare riferimenti ai file: vengono utilizzati quotidianamente dagli amministratori di sistema per semplificare la gestione del software, ottimizzare lo spazio su disco e mantenere una struttura ordinata del filesystem.<\/p>\n<p>Comprendere gli scenari in cui vengono impiegati aiuta a scegliere il tipo di collegamento pi\u00f9 adatto in base alle esigenze.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere gli utilizzi pratici degli hard link e dei link simbolici. Ricorda che i link simbolici sono preferiti per la gestione dei percorsi e delle versioni, mentre gli hard link vengono utilizzati quando \u00e8 necessario condividere lo stesso contenuto senza duplicarlo.<\/p><\/blockquote>\n<hr \/>\n<h3>Gestione delle versioni del software<\/h3>\n<p>Uno degli utilizzi pi\u00f9 comuni dei link simbolici riguarda la gestione di diverse versioni di uno stesso programma o di una libreria.<\/p>\n<p>Ad esempio, un sistema pu\u00f2 contenere pi\u00f9 versioni di un&#8217;applicazione:<\/p>\n<pre><code>\/opt\/applicazione-1.0\r\n\/opt\/applicazione-2.0\r\n<\/code><\/pre>\n<p>\u00c8 possibile creare un link simbolico che punti sempre alla versione attualmente utilizzata:<\/p>\n<pre><code>ln -s \/opt\/applicazione-2.0 \/opt\/applicazione\r\n<\/code><\/pre>\n<p>Le applicazioni utilizzeranno il percorso:<\/p>\n<pre><code>\/opt\/applicazione\r\n<\/code><\/pre>\n<p>senza dover conoscere la versione effettivamente installata.<\/p>\n<p>Per aggiornare il software sar\u00e0 sufficiente modificare il link simbolico anzich\u00e9 riconfigurare tutte le applicazioni che lo utilizzano.<\/p>\n<hr \/>\n<h3>Ottimizzazione dello spazio su disco<\/h3>\n<p>Gli hard link consentono di evitare la duplicazione dei dati.<\/p>\n<p>Poich\u00e9 pi\u00f9 hard link condividono lo stesso inode, il contenuto del file viene memorizzato una sola volta sul disco.<\/p>\n<p>Questo approccio pu\u00f2 risultare utile quando:<\/p>\n<ul>\n<li>lo stesso file deve essere accessibile da pi\u00f9 percorsi;<\/li>\n<li>si desidera evitare copie inutili di file di grandi dimensioni;<\/li>\n<li>si vuole ridurre il consumo di spazio di archiviazione.<\/li>\n<\/ul>\n<p>\u00c8 importante ricordare che gli hard link possono essere creati solo all&#8217;interno dello stesso filesystem.<\/p>\n<hr \/>\n<h3>Gestione dei percorsi<\/h3>\n<p>I link simbolici sono spesso utilizzati come scorciatoie verso file o directory collocate in altre posizioni del filesystem.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>ln -s \/var\/www\/html \/home\/mario\/sito\r\n<\/code><\/pre>\n<p>L&#8217;utente potr\u00e0 accedere al contenuto del sito web tramite:<\/p>\n<pre><code>\/home\/mario\/sito\r\n<\/code><\/pre>\n<p>senza spostare fisicamente i file.<\/p>\n<p>Questa tecnica \u00e8 molto utilizzata anche per mantenere la compatibilit\u00e0 con applicazioni che si aspettano directory specifiche.<\/p>\n<hr \/>\n<h3>Compatibilit\u00e0 tra applicazioni<\/h3>\n<p>In alcuni casi un programma si aspetta di trovare un file in un determinato percorso.<\/p>\n<p>Anzich\u00e9 duplicare il file o modificarne la configurazione, \u00e8 possibile creare un link simbolico.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>ln -s \/opt\/config\/app.conf \/etc\/app.conf\r\n<\/code><\/pre>\n<p>Il programma continuer\u00e0 a utilizzare il percorso previsto senza sapere che il file reale si trova altrove.<\/p>\n<hr \/>\n<h3>Esempi di utilizzo<\/h3>\n<table>\n<thead>\n<tr>\n<th>Scenario<\/th>\n<th>Tipo di collegamento consigliato<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Gestione delle versioni di un programma.<\/td>\n<td>Link simbolico.<\/td>\n<\/tr>\n<tr>\n<td>Collegare directory appartenenti a filesystem differenti.<\/td>\n<td>Link simbolico.<\/td>\n<\/tr>\n<tr>\n<td>Evitare copie duplicate dello stesso file.<\/td>\n<td>Hard link.<\/td>\n<\/tr>\n<tr>\n<td>Creare scorciatoie verso file o directory.<\/td>\n<td>Link simbolico.<\/td>\n<\/tr>\n<tr>\n<td>Mantenere pi\u00f9 nomi per lo stesso file.<\/td>\n<td>Hard link.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>Quale tipo di link scegliere?<\/h3>\n<p>In generale:<\/p>\n<ul>\n<li>gli <strong>hard link<\/strong> sono ideali quando si desidera condividere realmente lo stesso file senza duplicarne il contenuto;<\/li>\n<li>i <strong>link simbolici<\/strong> sono preferibili quando servono maggiore flessibilit\u00e0, compatibilit\u00e0 tra filesystem o collegamenti verso directory.<\/li>\n<\/ul>\n<p>Nella pratica amministrativa, i link simbolici sono utilizzati molto pi\u00f9 frequentemente degli hard link.<\/p>\n<blockquote><p><strong>\ud83d\udccc Da ricordare<\/strong> I link simbolici sono lo strumento pi\u00f9 utilizzato nell&#8217;amministrazione di sistemi Linux perch\u00e9 consentono di creare collegamenti tra filesystem diversi, gestire versioni di software e realizzare scorciatoie verso file e directory. Gli hard link vengono invece impiegati principalmente per condividere lo stesso contenuto senza occupare spazio aggiuntivo.<\/p><\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Preferisci i link simbolici quando realizzi strutture di directory flessibili o gestisci applicazioni e librerie. Utilizza gli hard link solo quando hai la certezza che i file rimarranno nello stesso filesystem e desideri evitare la duplicazione dei dati.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>I link simbolici sono ampiamente utilizzati per gestire versioni di software e librerie.<\/li>\n<li>Gli hard link permettono di condividere lo stesso contenuto senza duplicare i dati.<\/li>\n<li>I link simbolici facilitano la gestione dei percorsi e delle directory.<\/li>\n<li>Entrambi i tipi di collegamento trovano largo impiego nell&#8217;amministrazione dei sistemi Linux.<\/li>\n<li>Nella pratica quotidiana i link simbolici sono generalmente preferiti per la loro maggiore flessibilit\u00e0.<\/li>\n<\/ul>\n<h2>\ud83d\udcda Riepilogo della lezione<\/h2>\n<p>In questa lezione hai imparato come Linux gestisce i collegamenti tra file attraverso gli <strong>hard link<\/strong> e i <strong>link simbolici (soft link)<\/strong>. Hai compreso il ruolo degli inode, le differenze tra le due tipologie di collegamento e come crearle e identificarle utilizzando il comando <code>ln<\/code>.<\/p>\n<p>Hai inoltre scoperto i principali scenari in cui i link vengono utilizzati nell&#8217;amministrazione di sistema, come la gestione delle versioni del software, l&#8217;ottimizzazione dello spazio su disco e la semplificazione della struttura dei percorsi.<\/p>\n<h3>Concetti principali<\/h3>\n<ul>\n<li>Hai compreso il ruolo degli inode nella gestione dei file.<\/li>\n<li>Hai imparato la differenza tra hard link e link simbolici.<\/li>\n<li>Hai creato collegamenti utilizzando il comando <code>ln<\/code>.<\/li>\n<li>Hai imparato a riconoscere hard link e link simbolici tramite <code>ls -l<\/code> e <code>ls -li<\/code>.<\/li>\n<li>Hai confrontato il comportamento di una copia di un file con quello di un hard link.<\/li>\n<li>Hai scoperto i principali utilizzi dei collegamenti nell&#8217;amministrazione dei sistemi Linux.<\/li>\n<\/ul>\n<blockquote><p><strong>\ud83c\udfaf Obiettivo raggiunto<\/strong> Al termine di questa lezione sei in grado di scegliere il tipo di collegamento pi\u00f9 adatto, creare hard link e link simbolici e comprenderne il comportamento in diversi scenari amministrativi.<\/p><\/blockquote>\n<h3>Comandi da ricordare<\/h3>\n<table>\n<thead>\n<tr>\n<th>Comando<\/th>\n<th>Descrizione<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>ln file link<\/code><\/td>\n<td>Crea un hard link.<\/td>\n<\/tr>\n<tr>\n<td><code>ln -s destinazione link<\/code><\/td>\n<td>Crea un link simbolico.<\/td>\n<\/tr>\n<tr>\n<td><code>ls -l<\/code><\/td>\n<td>Visualizza i dettagli dei file e identifica i link simbolici.<\/td>\n<\/tr>\n<tr>\n<td><code>ls -li<\/code><\/td>\n<td>Mostra anche il numero di inode, utile per identificare gli hard link.<\/td>\n<\/tr>\n<tr>\n<td><code>rm link<\/code><\/td>\n<td>Elimina un collegamento senza rimuovere necessariamente il file originale.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Hard link e link simbolici a confronto<\/h3>\n<table>\n<thead>\n<tr>\n<th>Caratteristica<\/th>\n<th>Hard Link<\/th>\n<th>Link simbolico<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Punta a\u2026<\/td>\n<td>Inode del file.<\/td>\n<td>Percorso del file.<\/td>\n<\/tr>\n<tr>\n<td>Pu\u00f2 attraversare filesystem diversi?<\/td>\n<td>No.<\/td>\n<td>S\u00ec.<\/td>\n<\/tr>\n<tr>\n<td>Pu\u00f2 puntare a directory?<\/td>\n<td>No.<\/td>\n<td>S\u00ec.<\/td>\n<\/tr>\n<tr>\n<td>Continua a funzionare se il file viene spostato?<\/td>\n<td>S\u00ec.<\/td>\n<td>No.<\/td>\n<\/tr>\n<tr>\n<td>Condivide lo stesso inode?<\/td>\n<td>S\u00ec.<\/td>\n<td>No.<\/td>\n<\/tr>\n<tr>\n<td>Occupa spazio aggiuntivo per i dati?<\/td>\n<td>No.<\/td>\n<td>No (memorizza solo il percorso).<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote><p><strong>\ud83d\udca1 Preparazione all&#8217;esame LPIC-1<\/strong> Prima di proseguire assicurati di conoscere le differenze tra hard link e link simbolici, sapere utilizzare il comando <code>ln<\/code> con e senza l&#8217;opzione <code>-s<\/code>, riconoscere i due tipi di collegamento mediante <code>ls -l<\/code> e comprendere il ruolo degli inode.<\/p><\/blockquote>\n<hr \/>\n<h2>\u27a1\ufe0f Prossima lezione<\/h2>\n<p>Nella prossima lezione (<strong>104.6 Individuare i file di sistema e collocarli nella posizione corretta<\/strong>) approfondirai il <strong>Filesystem Hierarchy Standard (FHS)<\/strong>, lo standard che definisce l&#8217;organizzazione delle directory nei sistemi Linux. Imparerai lo scopo delle principali directory di sistema, come <code>\/bin<\/code>, <code>\/etc<\/code>, <code>\/usr<\/code>, <code>\/var<\/code> e <code>\/home<\/code>, e saprai individuare il corretto posizionamento di file e applicazioni.<\/p>\n<blockquote><p><strong>\ud83d\udcd6 Materiale di approfondimento<\/strong> Consulta il PDF allegato alla lezione per esercitarti con laboratori guidati, scenari realistici e quiz di autovalutazione.<\/p><\/blockquote>\n","protected":false},"comment_status":"open","ping_status":"closed","template":"","class_list":["post-3648","lesson","type-lesson","status-publish","has-post-thumbnail","hentry"],"uagb_featured_image_src":[],"uagb_author_info":{"display_name":"Rootmail Academy","author_link":"https:\/\/rootmail.it\/en\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"104.5 Creare e gestire hard link e link simbolici In Linux, i file non contengono direttamente il nome con cui vengono visualizzati nel filesystem. Ogni file \u00e8 invece identificato da una struttura dati chiamata inode, che contiene tutte le informazioni sul file, come i permessi, il proprietario, la dimensione e la posizione dei dati sul&hellip;","_links":{"self":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/lesson\/3648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/lesson"}],"about":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/types\/lesson"}],"replies":[{"embeddable":true,"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/comments?post=3648"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/media\/3685"}],"wp:attachment":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/media?parent=3648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}