[Risolto] Link simbolici e hard link

Personalizzazione grafica del sistema: icone, temi, sfondi, suoni, eccetera.
piccolo principiante
Prode Principiante
Messaggi: 108
Iscrizione: giovedì 11 aprile 2013, 22:15
Desktop: Ubuntu
Distribuzione: Ubuntu 16.04.3 LTS x86_64
Sesso: Maschile

[Risolto] Link simbolici e hard link

Messaggio da piccolo principiante »

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, 13:52, modificato 1 volta in totale.
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40301
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: Link simbolici e hard link

Messaggio da steff »

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 un 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
breynm_07
Prode Principiante
Messaggi: 187
Iscrizione: venerdì 23 novembre 2012, 11:19
Desktop: mate
Distribuzione: Arch Linux 64
Sesso: Maschile
Località: Treviso-prov.

Re: Link simbolici e hard link

Messaggio da breynm_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)
C'era una volta una mela davanti alla finestra, un giorno una fredda folata di vento antartico violò la finestra e bacò la mela
Avatar utente
Ubuntello
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 564
Iscrizione: sabato 27 novembre 2010, 19:42

Re: Link simbolici e hard link

Messaggio da Ubuntello »

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, 9:15, modificato 1 volta in totale.
mednafen-it - Gruppo di utenti italiani dell'emulatore Mednafen | Retro games: hidden gems - top titles - genre guides | Recommended games | Configurazione giochi Windows: Wine Staging con esync (dalla 4.6), drive_c +F + DXVK + vkd3d-proton + patch force feedback e force-large-address-aware
piccolo principiante
Prode Principiante
Messaggi: 108
Iscrizione: giovedì 11 aprile 2013, 22:15
Desktop: Ubuntu
Distribuzione: Ubuntu 16.04.3 LTS x86_64
Sesso: Maschile

Re: Link simbolici e hard link

Messaggio da piccolo principiante »

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
Scrivi risposta

Ritorna a “Personalizzazione dell'ambiente desktop”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti