Sincronizzazione Automatica di USB su Linux

Pubblicato da Yuri Carlenzoli | 22 Novembre 2010

Ecco come fare la sincronizzazione automatica od il backup di chiavi USB, hard disk esterni od altro su linux, senza programmi.

Sincronizzazione-automatica-USB-linux

Dopo aver presentato Syncsharp che permette di fare automaticamente la sincronizzazione ed il backup tra USB od hard disk esterni e computer una volta che questi sono stati collegati mi sono rimesso a smanettare per cercare di far questo anche con linux, questa volta ci sono riuscito!, spiego come fare in questo post.

Premetto inoltre che oltre la sincronizzazione ed il backup automatici tra computer, chiavi USB, hard disk esterni, macchine fotografiche, ecc. con qualche piccola variante è possibile far fare al computer qualsiasi cosa una volta che una determinata periferica è stata connessa.

Prima la teoria, per far eseguire un'azione automatica una volta che è stata collegata la periferica, in questo caso la sincronizzazione con chiavi USB bisogna (connessi al computer come root):

  • Creare lo script che fa quello che vogliamo fare quando viene inserita la periferica, in questo caso la sincronizzazione tra penna USB ed hard disk del computer;
  • Identificare (per bene) l'hardware della periferica, in questo caso la chiave USB;
  • Creare una regola in UDEV che una volta che viene identificata la periferica, quindi quando si connette la chiave usb esegua lo script.

Lo script per il backup automatico di chiavi USB

Questo è il punto più semplice della procedura che ho utilizzato per sincronizzare automaticamente ho utilizzato rsync, molto ben documentato ed anche in questo blo0g ho già scritto come fare il backup automatico con rsync, questa volta però sarà automatico anche con dispositivi rimovibili, questo è lo script ho utilizzato per sincronizzare il file che uso per annotarmi i post:

#! /bin/sh
rsync -u /media/PINGU/post-slack.odt /root/Desktop/post-slack.odt

Ora dovete salvare il file, io l'ho chiamato "Sincronizza-PC-USB" renderlo eseguibile ed attenzione, non mettetegli estensione .sh o qualsiasi altra altrimenti non sincronizzerà niente e perderete tempo come ho fatto io a capire cosa non va bene.

Identificare i dettagli della periferica hardware, la chiave USB

Ora, guardando con accessori (programmi) di sistema di amministrazione hardware o con qualsiasi editor di partizioni come ad esempio Gparted dovrete trovare il "dispositivo" associato alla chiave usb.

Nel mio caso la pendrive è in /dev/sdc, nello script per la sincronizzazione ho inserito /media/PINGU perchè la pendrive quando è montata risiede li, comunque a me/voi interessa solo sdc che è l'identificazione/associazione della pendrive da parte del kernel.

Ora, bisogna conoscere a fondo i dettagli del dispositivo collegato in sdc per dire ad UDEV con sicurezza di eseguire la sincronizzazione solamente quando è connesso quel dispositivo, chiediamolo proprio ad udev tramite il comando:

udevadm info -a -p $(udevadm info -q path -n /dev/sdc)

UDEV-Reperire-Dettagli-Dispositivo-USB

Ovviamente la fine della linea di codice (/dev/sdc) dovrà corrispondere al vostro dispositivo, l'USB per questa guida, non chiudete questa finestra di shell, vi servirà nel passaggio successivo.

Fare la regola per UDEV per la sincronizzazione automatica di USB

La mancanza della regola per UDEV è la cosa che non mi permetteva di fare la sincronizzazione/il backup automatico tra chiave USB e linux, all'inizio ho fatto anche un po fatica a capirne la sintassi ma leggendomi il manuale con calma ci sono riuscito, voi, visto che scrivo in italiano e vi faccio vedere la regola d'esempio non dovreste farne assolutamente.

In pratica bisogna specificare ad udev il dispositivo riconosciuto dal kernel (il mio è sdc) e bisogna cercare specificare con accuratezza quale USB è che si vuole sincronizzare, io ho indicato venditore, numero prodotto e codice seriale, è stato a sufficienza, quindi nella finestra di shell che avete aperto con il comando precedente cercate i valori ATTRS{idVendor}, ATTRS{idProduct} e ATTRS{serial}.

il comando per eseguire lo script sarà semplicemente la path (posizione) dove l'avete messo e tramite l'opzione RUN+ di UDEV verrà eseguito, il mio script quindi risulta:

KERNEL=="sdc", ATTRS{idVendor}=="13fe", ATTRS{idProduct}=="3100", ATTRS{serial}=="07961A08915B1341", RUN+="/path/script/Sincronizza-PC-USB"

Se per caso avete l'abitudine di inserire chiavi USB in porte diverse potrete modificare il primo pezzo in KERNEL=="sd*"; questo è lo script di UDEV che va salvato nella directory /etc/udev/rules.d/ con estensione .rules e con un numero ed un trattino alto avanti il nome, leggendo nel file /lib/udev/rules.d/40-slackware.rules viene riferito che:

Put your
# custom rules somewhere else (90-local.rules is a good idea)

Quindi io il mio file delle regole di UDEV per fare la sincronizzazione automatica della pendrive l'ho chiamato 90-sync-usb.rules, attenzione, i file devono avere un nome univoco.

Questo è il mio metodo che permette di fare la sincronizzazione automatica tra chiave USB ed hard disk, testato e perfettamente funzionante con Slackware 13.1, come avete intuito è possibile automatizzare molte cose tramite UDEV e le sue regole, spero vi sia utile e comodo come lo è a me 😉 .

Visto che non è una cosa comune e non è semplice arrivarci dal niente ricordo che questo articolo come i contenuti del blog sono coperti da diritti d'autore, non è riproducibile in alcun modo senza il permesso del sottoscritto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Moderazione dei commenti attiva. Il tuo commento non apparirà immediatamente.