sabato 17 marzo 2012

Sincronizzazione e storicizzazione files sul NAS (Bidirezionale!) - Parte 3

Riprendiamo dalla precedente Parte 2. Se ricordate, con SyncToy abbiamo impostato un folder pair e abbiamo visto che possiamo sincronizzare i dati in locale con la nostra cartella condivisa sul NAS.
Peccato che dobbiamo farlo a mano: noioso, e poi ci dimenticheremmo facilmente di farlo. Meglio automatizzare il processo!

Dovremo usare un eseguibile compreso nel pacchetto SyncToy, SyncToyCmd. Come si intuisce dal nome, si tratta dell'interfaccia a linea di comando di SyncToy.

Verificate la directory di installazione di SyncToy. Normalmente è C:\Program Files\SyncToy 2.1, io però lo ho installato sul disco D:, quindi in questa guida troverete "D:\Program Files\SyncToy 2.1".

Aprite l'Utilità di Pianificazione (Windows Task Scheduler), cercandolo sul menu di avvio digitando "pianificazione", o "Scheduler" se usate Windows in versione inglese.
Con il menu contestuale create un Nuovo Task




Nella scheda Action, in Program Script impostate l'eseguibile SyncToyCmd.exe, che risiede nella stessa cartella di SyncToy. Se il vostro folder pair è "SyncTest" come in questo test, nella casella "Add Arguments (Optional)" scrivete "-R SyncTest".


Bene, salviamo il Task e proviamo a eseguirlo.


Se tutto va bene, vedremo una finestra nera apparire, e dopo un tempo dipendente dalla quantità di files e dalla velocità dei vostri hd e della rete, sparire. A seguito di questa operazione i vostri files dovrebbero essere sincronizzati.

Vedremo più avanti come eliminare la finestra nera che compare in primo piano sul desktop. Adesso non sembra dare fastidio, ma quando l'operazione sarà schedulata, non ci farà piacere essere interrorrotti da una finestra che prende il focus e fa passare la applicazione corrente in secondo piano.

A questo punto ci occorre impostare la schedulazione. Qui, è a vostro piacimento. Io lo ho impostato ogni 30 minuti.


Ottimo! Adesso ogni modifica che fare sul vostro PC o sul vostro server viene reciprocamente sincronizzata.
Ora, provvediamo a evitare quella finestra dei comandi. Se avete aspettato l'esecuzione del task mentre lavorate, vi sarete già accorti di quanto possa essere fastidiosa.

Ci viene in soccorso un programma freeware, Hidden Start. Lo trovate qui: http://www.ntwind.com/software/hstart.html
La versione gratuita è sufficiente ai nostro scopi. Scaricatelo, scompattatelo da qualche parte (ricordatevi dove!). Io per esempio lo ho copiato nella mia directory "D:\Program Files\HStart". Quindi di qui in poi troverete questo path.

Apriamo di nuovo il nostro task, e andiamo sulla scheda Action. Modifichiamola in questo modo:


Nella casella "Program" mettete il path di Hidden Start, tra virgolette se il path contiene spazi. Usate hstart64.exe se avete Windows a 64 bit, altrimenti usate hstart.exe.
Nella casella "Add Arguments", visibile solo in parte, scrivete il testo seguente:

/NOCONSOLE /WAIT  "D:\Program Files\SyncToy 2.1\SyncToyCmd.exe -R SyncTest"

Che correggerete con i path corretti e il nome del Folder pair da voi scelto.

Provatelo. Se tutto è andato bene, la finestra nera non apparirà più.

Ok, fantastico, abbiamo sincronizzato.
Mah... che succede se sovrascrivo un documento e voglio recuperarne una vecchia versione? Questo sistema non mi aiuta. Beh, questo è oggetto della prossima parte. Installeremo e configureremo Rsnapshot sul nostro NAS.

Per inciso, queste funzionalità sarebbero anche disponibili con il tool di backup di Windows.
A mio avviso, se state leggendo questo post, sapete già perché non usarle (non che non funzionino, anzi). Un motivo potrebbe essere, per cominciare, il formato proprietario del backup. L'odioso vendor lock-in. La nostra soluzione non ha questo problema ed è sostanzialmente a costo zero.

A presto per la prossima parte!

giovedì 15 marzo 2012

OpenMediaVault

Con piacere parlo di OpenMediaVault (http://openmediavault.org/), distribuzione Linux derivata da Debian.
Gestisce efficacemente un NAS attraverso una ottima Web Interface. La creazione di cartelle condivise, l'attivazione di servizi, l'uso del RAID e (da qualche tempo, grazie a un plugin) di LVM rendono davvero accessibile a tutti la realizzazione di un NAS.
L'autore è lo stesso che ha ideato FreeNAS (che ora è mantenuto da altri). Per chi ha sembre avuto qualche riserva a usare FreeBSD (magari per via di minor supporto hardware, o per qualsiasi altro motivo) si troverà più a suo agio con OMV.
Io avevo già un serverino basato su Debian, dovendo realizzarne un altro (e dare utilizzo a hardware che avevo a disposizione) ho appunto utilizzato OMV con grande soddisfazione.

Ah, neanche a dirlo: tute gli articoli di questo blog, ad oggi, si applicano anche a OpenMediaVault. :-)

martedì 13 marzo 2012

Sincronizzazione e storicizzazione files sul NAS (Bidirezionale!) - Parte 2

Riprendiamo dalla precedente Parte 1.
Come primo passo identifichiamo una cartella da sincronizzare, e la cartella condivisa sul nostro nas che deve replicarne i dati. La creazione della cartella condivisa sul NAS non è oggetto di questo post, anche se non escludo di trattarlo in un prossimo futuro.

Si può anche utilizzare una cartella su uno share, e non necessariamente la radice della cartella condivisa.

Dopo aver installato SyncToy, apriamo l'applicazione e clickiamo su "New Folder Pair".


Se entrambe le cartelle sono vuote, potete lasciare tranquillamente l'opzione "Syncronize". Se una è piena, vi conviene metterla a sinistra e impostare l'opzione "Echo", per poi modificare in "Synchronize".


Date un nome al vostro "Folder Pair". Per il nostro test, ho scelto il nome "SyncTest", e procedete con la sincronizzazione.
In ogni caso, può essere utile un click "Preview" prima di passare alle vie di fatto con il tasto "Run".


A questo punto avete eseguito la prima sincronizzazione tra le due cartelle.
Ci assicureremo che le modifiche siano accolte sia quando vengono effettuate sul pc in locale, sia quando sono eseguite direttamente sul NAS (pensate a quando volete accedere da un portatile, che magari non ha in locale la copia dei vostri dati).

Proviamo quindi a modificare prima il contenuto di qualche file in locale, eseguire la sincronizzazione, controllare il contenuto dello stesso file sul server. E viceversa.


Ovviamente, a regime, la sincronizzazione avverrà in maniera diversa, cioè tramite un task schedulato tramite il programma Windows Task Scheduler, incluso in tutte le edizioni di Windows Vista e Seven. E, ovviamente, avvieremo SyncToy in maniera che la sua finestra non appaia a video, rischiando di interrompere il nostro lavoro. Ma questo sarà oggetto della prossima Parte 3.

giovedì 8 marzo 2012

Sincronizzazione e storicizzazione files sul NAS (Bidirezionale!) - Parte 1

In questo nuovo articolo parleremo di come utilizzare il nostro NAS, basato su Linux/BSD, per sincronizzare i dati presenti nelle nostre Workstation Windows 7 in maniera bidirezionale (e più, come vedremo) e storicizzarli utilizzando solo software open o quantomeno gratuiti.

Immaginiamo che il nostro pc desktop, basato su Windows (ma, ovviamente, la soluzione si può adattare a un desktop Linux), sia quello su cui lavoriamo e salviamo i nostri dati.
Essi finiscono sul disco locale del pc stesso (magari su un disco diverso da quello del sistema operativo; ma lo ho visto accadere raramente nei pc domestici). Se il disco si rompe (o, forse, dovrei dire QUANDO il disco si rompe), i dati potrebbero andare persi. Se tenete ai vostri dai, dovete provvedere, impostando una strategia di backup.
Un backup è tanto più efficace quanto più è trasparente. Se impostate un sistema che prevede di eseguire, ogni giorno o periodicamente, una operazione manuale, è probabile che l'esecuzione di tale operazione non avvenga con la opportuna cadenza, o non avvenga affatto, vanificando (a volte totalmente) totalmente la strategia.

La strategia qui illustrata non richiederà ulteriore manutenzione, se non controllare che ci sia sufficiente spazio sul NAS e sul PC.Non è una soluzione enterprise-level, certamente, ma può ben applicarsi in un ambiente domestico.
Dopotutto, se avete un NAS, sarebbe un vero peccato non utilizzarlo per proteggere i vostri dati.

Alla fine della configurazione, i nostri dati saranno accessibili nei seguenti modi:
  1. Nel disco locale del pc desktop
  2. In una o più cartelle condivise del vostro NAS, in read-write.
  3. Nelle cartelle di rsnapshot, storicizzati secondo i parametri che imposterete. Questa cartella verrà condivisa via Samba (o, volendo, NFS) in modalità rigorosamente read-only.
Così facendo, sarà possibile lavorare dal vostro pc sui dati in locale, anche se il NAS è spento. Quando questo verrà acceso, essi saranno nuovamente sincronizzati.
Se invece accendeste un portatile (o comunque un altro PC), accederete ai dati sulla cartella condivisa del vostro NAS. Non avrete bisogno (non obbligatoriamente, almeno) di avere una copia dei dati in locale anche sul laptop!
Al successivo avvio del PC, i dati in locale in esso contenuti si riallineeranno al contenuto del NAS, mantenendo quindi la consistenza.

I programmi che utilizzeremo sono:
  1. Microsoft SyncToy - disponibile gratuitamente per il download da Microsoft (Link)
  2. Windows Task Scheduler - strumento presente in tutte le edizioni di Microsoft Windows Vista e Seven
  3. Samba - per condividere files dal vostro NAS - presente nei repository della maggioranza delle distribuzioni Linux e BSD
  4. Rsnapshot - presente nei repository della maggioranza delle distribuzioni Linux e BSD
  5. Cron - schedulatore presente su Linux e BSD
  6. Hidden Start (Link). Opzionale, ma utile a non far vedere finestre di output di SyncToy mentre si lavora. La versione gratuita è sufficiente.

SyncToy 2.1 è in grado di sincronizzare (anche in maniera bidirezionale!) il contenuto di due cartelle. E' l'unico software (se si esclude l'opzionale, ma consigliato, hidden start) che dovremo installare sul Desktop). Non dovremo aprire condivisioni di rete. Il client rimane client!

Samba ci serve, come saprete, a condividere files presenti sul nostro NAS, rendendoli indipendenti dal tipo di filesystem che li ospita.

Rsnapshot è un tool basato su rsync, che ci consente di eseguire backup a cadenze regolari. Sarebbe utile se i backup risiedessero su dischi diversi da quelli contenenti i dati veri e propri, ma non è obbligatorio. Meglio ancora è se il sistema su cui si esegue rsnapshot è diverso da quello che contiene i dati. Tuttavia, in un ambiente casalingo, questo comporterebbe la necessità di un ulteriore sistema sempre (o quasi) acceso. Possiamo farci questo sconto, ed eventualmente, se abbiamo hardware che ci avanza, pensare a un terzo sistema su cui replicare i backup (ma questo sarà oggetto di un altro post).

Tramite cron scheduleremo l'esecuzione di rsnapshot in base ai nostri orari di lavoro.

La panoramica finisce qui. A più tardi per la Parte 2!


mercoledì 7 marzo 2012

Installare un server Subversion - Parte 6 - Eclipse

Riprendiamo dalla precedente Parte 5.

Avete tutti Eclipse installato, vero?
Bene. Cominciamo creando un progetto di grande spessore e dal design ricercato. Fior di pagine sono state scritte su progetti di questo genere!



Ora installiamo il plugin Subclipse, che ci servirà a utilizzare il nostro repository Subversion all'interno di Eclipse.


Aggiungiamo il sito "http://subclipse.tigris.org/update_1.8.x", con un nome a piacere (io ho scelto subclipse 1.8).


Selezioniamolo...


E installiamo il primo nodo. Non avremo bisogno di SVNKit.


Accettate la licenza, rispondete OK ai prompt successivi. A questo punto Eclipse vi chiede di riavviare, assecondatelo.


Aprite la Perspective "SVN Repository Exploring"


E aggiungete il nostro repository indicando la URL:
svn+ssh://svn01.subversion.homeserver/Repo01
Se non lo avete ancora fatto, questo è il momento per aprire Pageant e caricare la vostra chiave, come spiegato nella Parte 3.




Siamo connessi! Ora possiamo condividere il nostro progetto sul repository, e renderlo visibile agli altri utenti.







A prescindere da valutazioni circa il fatto che sia opportuno versionare i file .classpath, .project e la cartella .settings, abbiamo finito!
Le immagini parlano da sole, il procedimento è estremamente semplice. Sì, certo... per voi lo è stato. Io ci ho lavorato un tantino di più, ma fa nulla. La condivisione è ricchezza!

A domani per Visual Studio. Oppure Sharpdevelop. Forse entrambi, si tratta di capire quale preparerò per primo.
Buon divertimento!

martedì 6 marzo 2012

Installare un server Subversion - Parte 5

Riprendiamo il nostro percorso. Questa quinta parte sarà dedicata a queste attività:
  1. Checkout repository, aggiunta di un file, verifica author (svn01)
  2. Creazione di un nuovo utente, nuovo checkout, verifica author su suoi nuovi files e revisioni di file esistenti.
Checkout del repository

Se non lo abbiamo fatto, verifichiamo che Pageant sia attivo e la chiave del nostro utente di Subversion sia caricata. 
Da sistema operativo Windows, utilizziamo TortoiseSvn (basta clickare con il tasto destro sul desktop, o su qualsiasi finestra di Explorer (il file manager). Posizioniamoci quindi in una cartella idonea, selezioniamo la voce checkout, e dalla casella combo scegliamo il repository appena creato e a cui abbiamo provato a connetterci nella Parte 4.

La URL, nell'ambiente di prova, è: 

svn+ssh://svn01.subversion.homeserver/Repo01


Se il checkout è andato a buon fine, dovremmo ottenere un risultato simile a questo:


Il repository è ancora vuoto!
Proviamo quindi a creare un nuovo file, un semplice file di testo con Notepad. Scriviamo qualcsa e salviamo.
Nella finestra di Explorer il file appare con una iconcina, che suggerisce che il file è nuovo.


Tramite le funzioni "add" e "commit" eseguiamo le operazioni di aggiunta e salvataggio del file nel repository Subversion. Comodo!






Se ora verifichiamo la cronologia del file appena creato, potremo osservare che esso ha, come author "svn01", cioè il nome che abbiamo messo nella nostra riga sul file ~/.ssh/authorized_keys. Non c'è nessun riferimento al vero utente linux, che rimane sempre "subversion".


A questo punto non ci resta che verificare la bontà della nostra configurazione di Subversion, provvedendo ad aggiungere un nuovo utente. Dimostreremo che
  1. Non abbiamo bisogno di un nuovo utente linux
  2. Non dovremo avvalerci, per esempio, di apache per l'autenticazione. I nostri requisiti di sistema rimangono molto bassi.
Per creare un nuovo utente di Subversion, apriamo il nostro fedele PuTTYgen e creiamo una nuova chiave, esattamente come abbiamo fatto in precedenza. Come key comment utilizziamo svn02 (per esempio). Utilizziamo anche una nuova password, e salviamo la chiave in un opportuna cartella.



Apriamo Pageant e carichiamo la nuova chiave, esattamente come fatto in precedenza.


Dalla finestra di PuTTYgen, copiamo la chiave pubblica selezionandola e premendo CTRL-C.
Apriamo una sessione amministrativa al nostro subversion (subversion@homeserver nel nostro ambiente) e andiamo a modificare il file ~/.ssh/authorized_keys.



Salviamo il files (ESC e poi :wq). Sul server abbiamo finito!
Apriamo PuTTY per creare la sessione dedicata a svn02. Ci basta caricare quella di svn01 (svn01.subversion.homeserver) e salvarla in svn02.subversion.homeserver, e apportare una semplice modifica: in Connection -> SSH -> Auth dobbiamo modificare la chiave privata da associare alla sessione e selezionare quella appena creata. Non dimentichiamoci di salvare la sessione.


Andiamo su una nuova cartella, idonea a ricevere il repository (caricato però dall'utente svn02), e iniziamo l'operazione di check-out.


Ricordiamoci di modificare la URL del repository sostituendo svn01 con svn02: la URL diventa:
svn+ssh://svn02.subversion.homeserver/Repo01


Ci aspettiamo questo risultato:


A questo punto possiamo creare un nuovo file o modificare l'esistente per poi aggiungerlo e committare, come abbiamo fatto in precedenza. Scegliamo di fare un altro file che chiameremo SecondoFile.txt. Una volta aggiunto e committato il file, dovremmo avere una finestra simile a questa:


Riapriamo la finestra di browse del repository, e osserviamo che i due file hanno autori diversi.



Come promesso, abbiamo creato un nuovo utente Subversion e non abbiamo creato un utente Linux, né abbiamo avuto bisogno della password di root.

Nella prossima parte proviamo a utilizzare Eclipse...