GNU/Linux >> Linux Esercitazione >  >> Linux

Spiegazione di hard link e soft link in Linux

Hai mai avuto familiarità con qualcosa, ci hai lavorato intorno, ma non ne hai compreso appieno i concetti? Sento che succede a me più della maggior parte delle persone. Questa è una sensazione frustrante, ma è anche una sensazione a cui spesso si può rimediare facilmente. A volte, ci vuole solo qualcuno che spieghi il concetto in "inglese semplice", alias termini da profani. Questo è l'obiettivo di questo articolo. Voglio parlare di collegamenti reali e collegamenti soft (simbolici) nei termini più elementari possibili. Potresti renderti conto che questo concetto, che spesso è una lotta per gli amministratori di sistema, è abbastanza semplice. Se non altro, ti guido attraverso la sintassi per creare questi collegamenti (che molte persone trovano difficile ricordare). Quindi veniamo al punto.

Collegamenti reali

Il concetto di hard link è il più basilare di cui parleremo oggi. Ogni file sul filesystem Linux inizia con un singolo collegamento fisico. Il link è tra il nome del file e i dati effettivi archiviati nel filesystem. La creazione di un collegamento fisico aggiuntivo a un file significa alcune cose diverse. Discutiamo di questi.

Innanzitutto, crei un nuovo nome file che punta esattamente agli stessi dati del vecchio nome file. Ciò significa che i due nomi di file, sebbene diversi, puntano a dati identici. Ad esempio, se creo il file /home/tcarrigan/demo/link_test e scrivi ciao mondo nel file, ho un singolo hard link tra il nome del file link_test e il contenuto del file ciao mondo .

[tcarrigan@server demo]$ ls -l
total 4
-rw-rw-r--. 1 tcarrigan tcarrigan 12 Aug 29 14:27 link_test

Prendi nota del conteggio dei link qui (1 ).

Successivamente, creo un nuovo hard link in /tmp nello stesso identico file usando il seguente comando:

[tcarrigan@server demo]$ ln link_test /tmp/link_new

La sintassi è ln (original file path) (new file path) .

Ora, quando guardo il mio filesystem, vedo entrambi i collegamenti reali.

[tcarrigan@server demo]$ ls -l link_test /tmp/link_new 
-rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 link_test
-rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 /tmp/link_new

La differenza principale qui è il nome del file. Anche il conteggio dei link è stato modificato (2 ). In particolare, se io cat il contenuto del nuovo file, mostra i dati originali.

[tcarrigan@server demo]$ cat /tmp/link_new 
hello world

Quando vengono apportate modifiche a un nome file, l'altro riflette tali modifiche. Le autorizzazioni, il conteggio dei collegamenti, la proprietà, i timestamp e il contenuto del file sono esattamente gli stessi. Se il file originale viene eliminato, i dati esistono ancora sotto il collegamento fisico secondario. I dati vengono rimossi dall'unità solo quando tutti i collegamenti ai dati sono stati rimossi. Se trovi due file con proprietà identiche ma non sei sicuro che siano collegati fisicamente, usa ls -i comando per visualizzare l'inode numero. I file collegati tra loro condividono lo stesso numero di inode.

[tcarrigan@server demo]$ ls -li link_test /tmp/link_new 
2730074 -rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 link_test
2730074 -rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 /tmp/link_new

Il numero di inode condiviso è 2730074 , il che significa che questi file sono dati identici.

Se desideri maggiori informazioni sugli inode, leggi il mio articolo completo qui.

Limiti rigidi

Sebbene utili, ci sono alcune limitazioni a ciò che possono fare i collegamenti fisici. Per cominciare, possono essere creati solo per file normali (non directory o file speciali). Inoltre, un hard link non può estendersi su più filesystem. Funzionano solo quando il nuovo hard link esiste sullo stesso filesystem dell'originale.

Collegamenti soft

Comunemente indicati come link simbolici , i collegamenti software collegano tra loro file non regolari e regolari. Possono anche estendersi su più filesystem. Per definizione, un collegamento software non è un file standard, ma un file speciale che punta a un file esistente. Diamo un'occhiata a come creare un collegamento soft. Uso il ln -s comando e la seguente sintassi:

ln -s (file path you want to point to) (new file path)

Nell'esempio seguente, creo un nuovo file in /home/tcarrigan/demo/soft_link_test con il contenuto del file soft Hello world . Quindi creo un collegamento software a quel file in /tmp/soft_link_new :

[tcarrigan@server demo]$ ln -s /home/tcarrigan/demo/soft_link_test /tmp/soft_link_new
[tcarrigan@server demo]$ ls -l soft_link_test /tmp/soft_link_new 
-rw-rw-r--. 1 tcarrigan tcarrigan 17 Aug 30 11:59 soft_link_test
lrwxrwxrwx. 1 tcarrigan tcarrigan 35 Aug 30 12:09 /tmp/soft_link_new -> /home/tcarrigan/demo/soft_link_test

Nota che /tmp/soft_link_new è solo un collegamento simbolico, che punta al /home/tcarrigan/demo/soft_link_test originale . Se io cat il contenuto di /tmp/soft_link_new , dovrei vedere il mondo soft Hello testo.

[tcarrigan@server demo]$ cat /tmp/soft_link_new 
soft Hello world

Tutto ciò suona alla grande, ma ci sono alcuni svantaggi nell'utilizzo di un collegamento morbido. La preoccupazione più grande è la perdita di dati e la confusione dei dati. Se il file originale viene eliminato, il collegamento software viene interrotto. Questa situazione viene definita collegamento morbido penzolante . Se dovessi creare un nuovo file con lo stesso nome dell'originale, il tuo soft link penzolante non penderà più. Indica il nuovo file creato, indipendentemente dal fatto che fosse tua intenzione o meno, quindi assicurati di tenerlo a mente.

Duro o morbido?

Non c'è una risposta chiara qui. Il miglior collegamento è il tipo che si adatta alla tua situazione particolare. Sebbene questi concetti possano essere difficili da ricordare, la sintassi è piuttosto semplice, quindi questo è un vantaggio! Per mantenere i due facilmente separati nella tua mente, ti lascio con questo:

  • Un hard link punta sempre un nome file ai dati su un dispositivo di archiviazione.
  • Un collegamento software punta sempre un nome file su un altro nome file, che quindi punta alle informazioni su un dispositivo di archiviazione.

Si spera che questo ti aiuti a tenerli separati mentre ti fai strada attraverso i tipi di link necessari per raggiungere i tuoi obiettivi quotidiani!

[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]


Linux
  1. Come creare collegamenti rigidi e simbolici in Linux

  2. La differenza tra collegamenti simbolici e hard?

  3. Come creare collegamenti soft e hard in Linux

  4. Cosa sono i collegamenti simbolici (Soft Link) e come crearli sotto Linux

  5. Git e collegamenti reali

Guida all'aggiunta di collegamenti simbolici Linux

Spiegazione di Soft Link e Hard Link in Linux con esempi

Che cosa sono i collegamenti simbolici in Linux? Come creare collegamenti simbolici?

Il comando ln in Linux:crea collegamenti soft e hard

Soft Links in Linux:il riferimento completo

Hard link e soft link in Linux:tutto ciò che devi sapere