GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare collegamenti hard e soft (collegamento simbolico) su sistemi Linux

Molte volte in qualsiasi sistema operativo basato su Linux/Unix è saggio comprendere i concetti sottostanti, quindi solo uno può apprezzare la bellezza dei comandi e il modo in cui vengono implementati.

Alcuni piccoli dettagli ci aiuteranno molto nel debug e nella risoluzione dei problemi di molte situazioni difficili se conosciamo bene in anticipo questi comandi e concetti correlati.

In questo argomento tratterò cosa sono i link, i diversi tipi, i caratteri distintivi e come possono essere usati meglio insieme ai concetti richiesti.

Eseguendo il comando "man ln" puoi vedere che questo dice "crea un collegamento tra file" e non parla di collegamenti software o fisici.

[email protected] ~}$ man ln

Allo stesso modo il comando “man link” descrive come “chiamare la funzione di collegamento per creare un file”.

Collegamento soft:

Il collegamento software come suggerisce il nome è solo un nuovo collegamento creato al nuovo file. In questo caso, il numero di inode del nuovo file punterà al vecchio file.

Collegamento fisico:

In questo caso, il vecchio e il nuovo file punteranno entrambi allo stesso numero di inode.

Link simbolico:

In alcune versioni Unix/Linux sia i collegamenti simbolici che quelli software sono trattati allo stesso modo. Ma la differenza effettiva è che entrambi i numeri di inode del nuovo e del vecchio file punteranno a un nuovo numero di inode. Questo dipenderà completamente dall'implementazione.

Nota 1 :- In molti casi le terminologie simboliche e soft link sono usate in modo intercambiabile. Ma bisogna essere consapevoli di quando usare cosa.

Utilizzo del comando "ln" per creare collegamenti fisici e collegamenti software

Creazione di hard link

1) Il comando "man ln" fornirà il seguente output.

[email protected] ~}$ man ln
ln  - make links between files

2) Quando il comando "ln" viene passato senza argomenti, viene generato l'errore "operando file mancante".

[email protected] ~}$ln
ln: missing file operand
Try 'ln --help' for more information.

3) Creazione del collegamento fisico tra due file. Per prima cosa controlla eventuali file esistenti, altrimenti crea il file o i file da zero e quindi collegali. Di seguito è l'approccio passo dopo passo,

[email protected] ~}$ ls -la
total 24
drwx------  4 root root 4096 Feb  6 15:23 .
drwxr-xr-x 23 root root 4096 Jan 25 16:39 ..
-rw-r--r--  1 root root 3122 Jan 25 16:41 .bashrc
drwx------  2 root root 4096 Feb  6 15:23 .cache
-rw-r--r--  1 root root    0 Jan 25 16:41 .hushlogin
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
drwxr-xr-x  2 root root 4096 Jan 25 16:41 .ssh

i) Crea il file usando il comando "tocca"

[email protected] ~}$ touch 123.txt
[email protected] ~}$ ls -l
total 0
-rw-r--r-- 1 root root 0 Feb  6 15:51 123.txt

ii) Inserisci i contenuti nel file usando il comando "cat" e premi "ctrl+c" per salvare ed uscire.

[email protected] ~}$ cat > 123.txt
Welcome to this World!
^C

iii) Creare l'hard link tra i file “123.txt” e “321.txt”. In questo caso esisteva già il “123.txt” con i contenuti “Benvenuti in questo mondo”.

[email protected] ~}$ ln 123.txt 321.txt
[email protected] ~}$ ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 123.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt

iv) Controllare i numeri di inode (nodo indice) dei file. Per entrambi i file il numero di inode è lo stesso e che è 794583. Controlla anche il contenuto del nuovo file “321.txt” che è anche lo stesso di “123.txt”.

[email protected] ~}$ ls -li
total 8
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 123.txt
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
$ cat 321.txt
Welcome to this World!

Nota 2 :- Il numero di inode è un numero di indice univoco generato per qualsiasi file che viene creato nei sistemi operativi Linux/unix. Questi numeri di inode sono memorizzati negli attributi directory/file nella directory /proc. Ma in caso di collegamenti, questi numeri di inode sono condivisi b/n i file e solo il percorso viene aggiornato nella tabella dei file.

v) Crea un altro file chiamato "456.txt" e collegalo usando il comando ln a "321.txt". Ora tutti e tre i file hanno gli stessi numeri di inode. Il contenuto di "456.txt" sarà uguale a quello del file originale.

[email protected] ~}$  ls -li
total 12
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 123.txt
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 321.txt
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 456.txt
$ cat 456.txt
Welcome to this World!
[email protected] ~}$   ls -l
total 12
-rw-r--r-- 3 root root 23 Feb  6 15:52 123.txt
-rw-r--r-- 3 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 3 root root 23 Feb  6 15:52 456.txt

vi) La rimozione del file di origine o di uno qualsiasi di questi file non influirà sugli altri file. Il file sorgente può essere rimosso usando il comando "rm". Anche i contenuti di altri file non avranno alcun impatto.

[email protected] ~}$ rm 123.txt
[email protected] ~}$ ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
[email protected] ~}$ ls -li
total 8
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
[email protected] ~}$ cat 456.txt
Welcome to this World!

vii) La creazione di collegamenti fisici tra directory non è consentita.

[email protected] ~}$ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
[email protected] ~}$ mkdir abc
[email protected] ~}$ ln abc def
ln: abc: hard link not allowed for directory

viii) Eventuali modifiche al contenuto di un file influiranno e modificheranno di conseguenza il contenuto di un altro file, di seguito sono spiegati i passaggi,

[email protected] ~}$ vi 321.txt
Welcome to this World!
You are welcomed to this new world
:wq
[email protected] ~}$ ls -l
total 12
-rw-r--r-- 2 root root   59 Feb  6 16:24 321.txt
-rw-r--r-- 2 root root   59 Feb  6 16:24 456.txt
drwxr-xr-x 2 root root 4096 Feb  6 16:18 abc
[email protected] ~}$ cat 456.txt
Welcome to this World!
You are welcomed to this new world

Creazione di un collegamento software:

1)  Crea il file "src.txt" usando il comando "touch" e inserisci il contenuto come "Hello World" usando il comando cat, quindi premi "ctrl+c" per salvare ed uscire.

[email protected] ~}$ touch src.txt
[email protected] ~}$ cat > src.txt
Hello World
^C
[email protected] ~}$ ls -l
total 4
-rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt

2) Creare il file di destinazione come "dst.txt" e utilizzando le opzioni della riga di comando "ln -s" creare il collegamento simbolico (chiamato anche collegamento software). Controlla il contenuto del file "dst.txt" e puoi vedere lo stesso contenuto di "src.txt".

[email protected] ~}$ ln -s src.txt dst.txt
[email protected] ~}$  ls -l
total 4
lrwxrwxrwx 1 root root  7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt
[email protected] ~}$  cat dst.txt
Hello World

3) In caso di collegamenti simbolici, il numero di inode del file sorgente e del file di destinazione è diverso. Inoltre, nelle autorizzazioni compare la lettera "l" che indica che si tratta di collegamenti. "dst.txt–>src.txt" sarà il nuovo collegamento stabilito ora.

[email protected] ~}$  ls -li
total 4
794584 lrwxrwxrwx 1 root root  7 Feb  6 16:33 dst.txt -> src.txt
794583 -rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt

4) È consentita la creazione simbolica per le directory. Questo è spiegato come di seguito nei passaggi

[email protected] ~}$ mkdir abc
[email protected] ~}$ ln -s abc def
$ ls -l
total 8
drwxr-xr-x 2 root root 4096 Feb  6 16:34 abc
lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt

5) Numero di inode per tutti i file/directory (origine e destinazione sono diverse)

[email protected] ~}$  ls -li
total 8
794585 drwxr-xr-x 2 root root 4096 Feb  6 16:34 abc
794586 lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
794584 lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
794583 -rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt

6) È possibile creare collegamenti simbolici per le directory come spiegato in precedenza. Una volta create queste directory con collegamento simbolico, all'interno di queste directory possono essere creati file. Questo renderà più interessante sapere come si comporta ora. Quando i file vengono creati nella directory di origine, lo stesso si riflette anche nella directory di destinazione. I seguenti passaggi lo spiegano chiaramente.

[email protected] ~}$ $ cd abc
[email protected] ~}$  touch 123.txt
[email protected] ~}$  vi 123.txt
Hello
:wq!
[email protected] ~}$  touch 456.txt
[email protected] ~}$  cd ..
[email protected] ~}$  ls -l
total 8
drwxr-xr-x 2 root root 4096 Feb  6 16:36 abc
lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt
[email protected] ~}$ cd def
[email protected] ~}$ ls -l
total 4
-rw-r--r-- 1 root root 6 Feb  6 16:37 123.txt
-rw-r--r-- 1 root root 0 Feb  6 16:36 456.txt
[email protected] ~}$ cat 123.txt
Hello

Nota 3 :- Possiamo avere un numero qualsiasi di link nidificati. Ma l'utente/amministratore che crea questi link simbolici dovrebbe essere consapevole del fatto che questi creeranno confusione. A volte possono essere dimenticati e possono creare risultati indesiderati. Quindi devono stare attenti.

Nota 4 :-  Ci sono alcune possibilità di collegamento "simbolico" o "soft" che punta a un collegamento inesistente. Questo è chiamato come "collegamento penzolante". Questo non indicherà nessun luogo.

Nota 5 :- ci sono chiamate di sistema usate in linux/unix per creare collegamenti simbolici OR fisici a livello di programmazione (usando programmi C/C++ a livello di sistema). Questi sono 1) collegamento simbolico 2) collegamento simbolico.

Questi non devono essere confusi con le utilità della riga di comando che ho descritto sopra.

Rimozione di collegamenti software/collegamenti simbolici

I collegamenti soft o simbolici vengono rimossi utilizzando i comandi "rm" e unlink.

Sintassi:

# rm

# scollega

Rimozione delle directory di Soft Link

Sintassi:

# rm

# scollegare

Conclusioni:

La creazione di collegamenti, fisici o flessibili, sarà molto utile per gli amministratori e gli sviluppatori. Il materiale di riferimento di cui sopra sarà utile per capire che tipo di collegamento stiamo creando e come è utile. Anche questo articolo aiuterà a comprendere le differenze e l'utilizzo dei collegamenti.


Linux
  1. Come rendere non cancellabili file e directory, anche per root in Linux

  2. Come creare collegamenti rigidi e simbolici in Linux

  3. Spiegazione di hard link e soft link in Linux

  4. RHEL 7 – RHCSA Note:crea collegamenti rigidi e soft.

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

Spiegazione di Soft Link e Hard Link in Linux con esempi

Come collegare simbolicamente un file in Linux

Come creare e utilizzare file di scambio su Linux

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

Il comando ln in Linux:crea collegamenti soft e hard

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