[Risolto] Link simbolici e hard link

Personalizzazione grafica del sistema: icone, temi, sfondi, suoni, ecc.

[Risolto] Link simbolici e hard link

Messaggioda piccolo principiante » sabato 28 ottobre 2017, 22:09

Per semplificare l'accesso alle cartelle che si trovano sul HD esterno ho creato dei link sul Desktop; tuttavia talvolta (apparentemente senza causa) all'avvio il sistema "perde i collegamenti", nel senso che non funzionano e vengono descritti come link interrotti. Girando in rete ho scoperto che non tutti i link sono uguali: che differenza c'è tra hard link e link simbolici? Quando usare i primi e quando i secondi? Si può dire che i link simbolici corrispondono ai classici collegamenti di Windows?
Ultima modifica di piccolo principiante il domenica 29 ottobre 2017, 14:52, modificato 1 volta in totale.
piccolo principiante
Prode Principiante
 
Messaggi: 107
Iscrizione: aprile 2013
Desktop: Ubuntu
Distribuzione: Ubuntu 16.04.3 LTS x86_64
Sesso: Maschile

Re: Link simbolici e hard link

Messaggioda steff » sabato 28 ottobre 2017, 22:36

L'hard link è solo possibile su filesystem linux e non si usa normalmente, il softlink è il normale collegamento tipo windows.
Se ti vengono interrotti è perché all'avvio del desktop la risorsa esterna non è disponibile (usb sconesso ecc ecc). Non ho controllato recentemente ma dipende dal gestore file/DE come e se vengono corrotti, tempo fa su KDE rimanevano intatti ma non funzionanti mentre in gnome si dovevano sempre ricreare.
Hai fatto il backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Avatar utente
steff
Moderatore Globale
Moderatore Globale
 
Messaggi: 37003
Iscrizione: febbraio 2007
Località: Toscana
Desktop: LXQt
Distribuzione: Arch Linux 64bit
Sesso: Maschile

Re: Link simbolici e hard link

Messaggioda breynm_07 » domenica 29 ottobre 2017, 0:07

... che differenza c'è tra hard link e link simbolici? ...

Un hard link è un file copia live di un file, questo si aggiorna quando il file originale si aggiorna come volume, e viceversa, anche cambiando i nomi, di entrambi o di uno solo, il collegamento tra i file rimane attivo, lo spazio occupato sul disco è pari ad uno solo, cancellando uno, l'altro rimane, e tutte queste proprietà valgono per qualsiasi sia il numero degli hard kink creati, cioè 100 hard link di un file più il file d'origine pesano come un file solo per il disco, ecc., ma hanno un'unico limite: devono risiedere sulla stessa partizione.
Grande è l'impossibile, osare la confusione, il cielo sopra e sotto, ci si può solo perdere (CCCP)
Avatar utente
breynm_07
Prode Principiante
 
Messaggi: 128
Iscrizione: novembre 2012
Località: Treviso-prov.
Desktop: mate gnome2 e 3 lxde
Distribuzione: Arch_Debian Linux 64
Sesso: Maschile

Re: Link simbolici e hard link

Messaggioda Ubuntello » domenica 29 ottobre 2017, 13:38

steff ha scritto:L'hard link è solo possibile su filesystem linux [...]

Anche su altri filesystem e sistemi operativi. Ad esempio su Windows si possono creare con il comando mklink.


Attenzione però che con gli hard link è facile combinare pasticci, e per questo motivo i novizi dovrebbero prestare attenzione (infatti quando da interfaccia grafica selezioni “Crea collegamento”, quello che viene creato è un link simbolico). Perché bisogna stare attenti agli hard link? Perché gli hard link appaiono come se fossero una copia del file dal quale sono stati generati, con la differenza che quando li modifichi, modifichi il file originale. Se hai dei dubbi, ti consiglio di fare questa prova:

  1. Crea nella tua home un file di nome «esempio.txt» con questo contenuto: “ciao, sono un esempio”, e di questo file crea un hard link di nome «hardlink_esempio.txt»:

    Codice: Seleziona tutto
    ln esempio.txt hardlink_esempio.txt

  2. Modifica «hardlink_esempio.txt» e sostituiscine il contenuto con “contenuto sovrascritto”, quindi salva le modifiche.
  3. Adesso apri «esempio.txt» per vedere che il contenuto è stato sovrascritto.
  4. Guarda anche le proprietà del file:

    Codice: Seleziona tutto
    ls -l esempio.txt

    # questo è il risultato sulla mia distribuzione:
    # -rw-r--r--. 2 user group 23 Oct 29 12:38 esempio.txt
    #             ↑

    Quello indicato dalla freccia è il numero di hard link del file. Lo stesso file «esempio.txt» è da considerarsi un hard link, e nel momento in cui un file non ha più hard link, quel file viene eliminato. Se elimini soltanto «esempio.txt» non hai perso il file, e neanche se elimini soltanto «hardlink_esempio.txt», ma se li elimini entrambi sì (a meno che quel file non abbia più di due hard link).

Per evitare pasticci consiglio di ricorrere agli hard link solo in casi eccezionali, ad esempio per risparmiare spazio quando si hanno più file identici su disco, ma soltanto quando si è certi che questo non causarà problemi. Esempio:

Codice: Seleziona tutto
> ls -l
total 488M
-r--r--r--.  1 user group 452M Nov  7  2015 'Dino Crisis 2 (USA) (Track 1).bin'
-r--r--r--. 33 user group  36M Nov  7  2015 'Dino Crisis 2 (USA) (Track 2).bin'
-r--r--r--.  1 user group  208 Nov  7  2015 'Dino Crisis 2 (USA).cue'

Come puoi vedere, il file 'Dino Crisis 2 (USA) (Track 2).bin' ha 33 hard link (di tracce uguali appartenenti a giochi multitraccia per PlayStation), e in questo caso gli hard link sono stati usati per risparmiare spazio.

Per automatizzare creazione di hard link per i file uguali è possibile usare il comando hardlink dall'omonimo pacchetto, esempio:

Codice: Seleziona tutto
cd "Games/Sony - PlayStation"
hardlink -n -v -t --exclude ".*cue" .

Nota: l'opzione “-n” avvia una simulazione degli hard link che verrebbero creati, ed è necessario rimuoverla per creare effettivamente gli hard link. Nell'esempio è stato prima eseguito un cd nella cartella contenente i giochi, altrimenti il comando hardlink avrebbe agito su tutti i file a partire dalla cartella attuale, non solo sulle tracce dei giochi, e senza simulazione questo avrebbe potuto portare a conseguenze molto spiacevoli.

Importante: il fatto che nell'esempio siano stati creati degli hard link per dei giochi non significa che sia sicuro farlo per tutti i giochi. Con le copie dei giochi per console in genere non ci sono problemi, ma in giochi per computer dove è previsto che il gioco scriva nella cartella con i suoi file, è meglio non creare hard link, a meno che si sia sicuri di quel che si fa.

Come regola generale, per valutare se è sicuro aggiungere uno o più hard link a un file, bisogna domandarsi se quel file possa subire delle modifiche di contenuto in futuro, e se in caso affermativo questo possa avere delle conseguenze negative. Quando non se ne è sicuri, è saggio non aggiungere hard link.
Ultima modifica di Ubuntello il giovedì 2 novembre 2017, 10:15, modificato 1 volta in totale.
mednafen-it - Gruppo di utenti italiani dell'emulatore Mednafen. Si organizzano anche partite online, sempre con Mednafen! | Retro games: hidden gems - top titles - genre guides
Avatar utente
Ubuntello
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 421
Iscrizione: novembre 2010
Località: GentooLand

Re: Link simbolici e hard link

Messaggioda piccolo principiante » domenica 29 ottobre 2017, 14:51

Grazie a tutti, soprattutto a Ubuntello per gli esempi che sono stati illuminanti.
Da un punto di vista pratico, ho capito che quelli che mi servono per ora sono i link simbolici.
Per me è Risolto
piccolo principiante
Prode Principiante
 
Messaggi: 107
Iscrizione: aprile 2013
Desktop: Ubuntu
Distribuzione: Ubuntu 16.04.3 LTS x86_64
Sesso: Maschile


Torna a Personalizzazione dell'ambiente desktop

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 1 ospite