Appunti di vita in ordine sparso

Google Drive, Dropbox ed i link simbolici

Quando si cerca di sfruttare i vantaggi dell’archiviazione in cloud (tramite Google Drive, Dropbox… O SkyDrive o qualunque altro sistema) per salvare le impostazioni dei propri programmi nella cartella sincronizzata in rete è possibile incontrare un problema: non tutti i programmi prevedono la possibilità di modificare il percorso predefinito dei dati utente.

Per ovviare a tale problema possono venire in nostro aiuto i collegamenti simbolici (o “symlinks“, da Symbolic Links).


Cosa sono e come funzionano i Symlinks in Windows

I Symlinks, in Windows, sono una caratteristica “ereditata” (non è elegante dire “copiata”, giusto?) dai sistemi Unix/Linux. Questi altro non sono, in parole povere, che dei collegamenti a determinati file o directories. Un link simbolico è simile al solito collegamento ben noto agli utenti Windows (shortcut); la differenza sostanzialmente sta nel fatto che un normale collegamento (tasto destro del mouse su un file, “Crea collegamento“…) è in realtà, nel filesystem, un file con estensione .lnk… Un collegamento simbolico invece è un rimando al file reale. Il vantaggio di ciò è che se abbiamo in C:\ un collegamento simbolico a.txt che punta ad un file C:\mia_cartella\a.txt, possiamo da un qualsiasi programma andare a scrivere direttamente su C:\a.txt: in realtà staremo modificando C:\mia_cartella\a.txt.

I link simbolici in Windows si differenziano in due tipologie:

  • Soft symbolic links
  • Hard symbolic links

I primi sono un rimando ad un determinato file in una specifica posizione; se creiamo un soft symlink X ad un determinato file Y, andando poi ad eliminare o spostare Y, X continuerà ad esistere ma non funzionerà più. Un hard symlink invece è uno strumento più potente che va a puntare all’area di memoria utilizzata: creando un collegamento simbolico forte X ad un file Y (nota: gli hard symlinks sono possibili solo sulla medesima partizione), andando ad eliminare o spostare Y, X continuerà ad esistere e il suo contenuto sarà integro. Se si creano più hard symlinks che puntano allo stesso contenuto, il contenuto verrà fisicamente eliminato dal filesystem solo quando il file originale e tutti i suoi hard symlinks verranno cancellati.

L’hard symlink ad una cartella viene chiamata junction.

Windows non integra di default un sistema per creare i link simbolici da interfaccia grafica; è possibile installare una specifica estensione del sistema (Link Shell Extension), oppure si può tranquillamente operare da prompt di MS-DOS:

  1. Aprire un prompt dei comandi come Amministratore (clic su pulsante Start, in “Cerca programmi e file” digitare “cmd“, fare tasto destro del mouse su cmd.exe e selezionare “Esegui come amministratore”… Oppure una volta digitato “cmd” premere Ctrl+Shift+Invio)
  2. Andare nel percorso in cui si desidera creare il link simbolico (es. cd c:\)
  3. Eseguire il comando mklink collegamento destinazione (es. mklink a.txt C:\percorso-file-originale\a.txt)

Se non si specifica nessuna opzione, di default mklink crea un soft symlink; se invece si utilizza l’opzione /H viene creato un hard symlink (es. mklink /H a.txt C:\percorso-file-originale\a.txt).
Digitando mklink /? vengono mostrate le istruzioni su come utilizzare il comando..

Ci sono casi in cui ha senso usare un hard symbolic link, ma per la maggior parte degli scopi (come quelli di seguito esposti in questa mini-guida) sono sufficienti i normali soft symbolic link (ed è preferibile usare questi).


Salvare e sincronizzare le impostazioni dei programmi sul cloud

I programmi Windows generalmente possono andare a salvare le proprie preferenze in uno di questi percorsi:

  • Nella cartella di installazione del programma (per esempio C:\Program Files o C:\Program Files (x86))
  • Nella cartella AppData \Roaming dell’utente corrente (raggiungibile eseguendo il collegamento di sistema %appdata%)
  • Nella cartella di profilo utente (%userprofile%)

È necessario dunque capire prima di tutto dove il nostro programma va a salvare la sua configurazione; dopo di che dobbiamo decidere una struttura di directory da utilizzare sulla nostra cartella di clouding (io per esempio nella mia cartella D:\Google Drive ho creato una cartella AppData nella quale aggiungo una directory per ogni programma…).

Resta solo da chiudere tutti i programmi che hanno accesso al file di configurazione, spostare questo nella cartella sincronizzata online e creare il link simbolico (un normale soft symlink).

Se anziché uno o un paio di file, la configurazione è fatta da molti file, è possibile spostare l’intera cartella sul percorso sincronizzato in clouding, creando poi una junction alla cartella (per es. mklink /J “C:\Users\mio_user\AppData\Roaming\software\config” “D:\Google Drive\AppData\software\config“)

Attenzione: ovviamente, se si vuole usare il programma su più PC, è preferibile replicare su tutti questi la medesima struttura di partizioni e directory (sia di installazione del programma, che di eventuali riferimenti o archivi utilizzati), questo è fondamentale se vi sono riferimenti espliciti all’interno della configurazione che andiamo a sincronizzare in cloud.

Un esempio

Per tener traccia delle modifiche software in fase di sviluppo utilizziamo con i colleghi mercurial; il client TortoiseHG Workbench permette di salvare una lista dei repositories. Il mio scopo è quello di avere un backup di questa lista e di averla uguale sui diversi PC che utilizzo per lavoro.

Prima di tutto ho identificato dove il programma salva questa lista: %APPDATA%\TortoiseHg\thg-reporegistry.xml

Dopo questo è bastato creare una cartella D:\Google Drive\AppData\TortoiseHg e spostare il file thg-reporegistry.xml all’interno di questa. Poi aprendo un prompt dei comandi come amministratore ho lanciato i seguenti comandi:

In tutti i PC ho sostituito il file thg-reporegistry.xml con un collegamento alla cartella su Google Drive.

E… Le jeux sont faits 😉


 

Condividi articolo
Share on FacebookTweet about this on TwitterShare on Google+Email this to someone