Come aggiornare un collegamento simbolico Linux
I collegamenti sono sempre stati una caratteristica avanzata unica dei file system UNIX.
Gli utenti UNIX e Linux trovano molti usi per i collegamenti, in particolare i collegamenti simbolici. Un modo in cui mi piace utilizzare i collegamenti simbolici è gestire i backup della configurazione di varie apparecchiature IT.
Ho una struttura di directory per contenere tutto ciò che riguarda documentazione, aggiornamenti e altri file per computer e dispositivi sulla mia rete. I dispositivi possono includere router, punti di accesso, server NAS e laptop, spesso di marche e versioni diverse. Gli stessi backup della configurazione potrebbero trovarsi in profondità all'interno dell'albero delle directory, ad es. /home/alan/Documents/network/device/NetgearRL5000/config
.
Per semplificare il processo di backup, ho una directory a casa mia chiamata Configurazione
. Utilizzo collegamenti simbolici da questa directory per puntare alla directory del dispositivo specifico:
:~/Configuration/ $ ls -F1
Router@
Accesspoint@
NAS@
Nota: l'opzione -F
del comando ls
aggiunge caratteri speciali a ciascun nome di file per rappresentarne il tipo. Come mostrato sopra, il simbolo @
indica che si tratta di collegamenti.
Creazione di un collegamento
Il collegamento simbolico Router punta alla directory config
del mio Netgear RL5000. Il comando per crearlo è ln -s:
$ ln -s /home/alan/Documents/network/device/NetgearRL5000/config Router
Quindi, dai un'occhiata e conferma con ls -l:
:~/Configuration/ $ ls -l
Router -> /home/alan/Documents/network/device/NetgearRL5000/config
NAS -> /home/alan/Documents/network/device/NFSBox/config
...
Il vantaggio è che quando eseguo la manutenzione su questo dispositivo, vado semplicemente a ~/Configuration/Router
.
Il secondo vantaggio dell'utilizzo di un collegamento simbolico diventa evidente se decido di sostituire questo router con un nuovo modello. Potrei riprogrammare il vecchio router come punto di accesso. Pertanto, la sua directory non viene eliminata. Invece ho una nuova directory che corrisponde al nuovo router, forse un ASUS DF-3760. Creo la directory e ne confermo l'esistenza:
$ mkdir -p ~/Documents/network/device/ASUSDF-3760/config
:~/Documents/network/device/ $ ls
NetgearRL5000
ASUSDF-3760
NFSBox
...
Un altro esempio potrebbe essere se disponi di diversi punti di accesso nei tuoi uffici. Puoi utilizzare collegamenti simbolici per rappresentarli logicamente con un nome generico, come ap1
, ap2
e così via, oppure puoi utilizzare parole descrittive come ap_floor2
, ap_floor3
, ecc. In questo modo, man mano che i dispositivi fisici cambiano nel tempo, non è necessario aggiornare continuamente i processi che potrebbero gestirli poiché stanno indirizzando i collegamenti piuttosto rispetto alle directory effettive del dispositivo.
Aggiornamento di un collegamento
Poiché il mio router principale è cambiato, desidero che il collegamento simbolico del router punti alla sua directory. Potrei usare i comandi rm
e ln
per rimuovere e creare un nuovo collegamento simbolico, ma c'è un modo per farlo in un unico passaggio utilizzando solo il comando ln
comando con alcune opzioni:
:~/Configuration/ $ ln -vfns ~/Documents/network/device/ASUSDF-3760/config/ Router
'Router' -> '/home/alan/Documents/network/device/ASUSDF-3760/config/'
:~/Configuration/ $ ls -l
Router -> /home/alan/Documents/network/device/ASUSDF-3760/config
NAS -> /home/alan/Documents/network/device/NFSBox/config
Le opzioni, secondo la pagina man, sono le seguenti:
-v, --verbose
stampa il nome di ciascun file collegato
-f, --force
rimuovere il file di destinazione (necessario poiché esiste già un collegamento)
-n, --no-dereference
tratta LINK_NAME come un file normale se è un collegamento simbolico a una directory
-s, --simbolico
creare collegamenti simbolici anziché collegamenti reali
Incartare
I collegamenti sono una delle funzionalità più potenti dei file system UNIX e Linux. Altri sistemi operativi hanno tentato di imitare questa capacità, ma non hanno mai funzionato altrettanto bene o non sono stati altrettanto utilizzabili a causa della mancanza di una progettazione di collegamento fondamentale nei loro file system.
La dimostrazione di cui sopra è solo una delle tante possibilità di sfruttare i collegamenti per navigare senza problemi in una struttura di directory in continua evoluzione in un ambiente di produzione vivente. I collegamenti forniscono la flessibilità necessaria in un'organizzazione che non rimane mai statica a lungo.