BackupPC – backup dell’intero pool su nastro o file

Supponiamo che vogliate migrare una installazione di BackupPc su un’altra macchina o che vogliate fare un backup “dei backup”. Di seguito vi propongo una soluzione molto semplice che il comando dump per copiare il contenuto del pool su nastro o su file.
Perché il codice funzioni correttamente è necessario che il pool sia su un filesystem diverso da quello usato per montare la root “/”. A mio avviso, usare un mountpoint per il pool è utile non solo per il backup ma consente di ripristinare il sistema operativo senza dover spostare i dati.
supponiamo quindi che l’installazione di BackupPc sia fatta usando i percorsi di default ma utilizziamo un link che punti su un mountpoint fuori dal filesystem di root. Supponiamo di avere i seguenti mount point:

[root@morzello ~]# mount
/dev/mapper/VolGroup01-LogVol00 on / type ext3 (rw)
/dev/mapper/vgData-Data on /mnt/data type ext3 (rw)
//server-esterno/repository on /mnt/repository type cifs (rw,mand)
...

la prima cosa da fare è quella di portare l’installazione di BackupPC sotto /mnt/data creando un link simbolico su /var/lib/backuppc:

ln -s /var/lib/backuppc /mnt/data/backuppc
ls -l /var/lib/backuppc
lrwxrwxrwx  1 root  root 18 May 13  2010 backuppc -> /mnt/data/backuppc

Consiglio di creare il link prima di procedere con l’installazione altrimenti dovrete spostare i dati da un filesystem all’altro.

Lo script
Lo script non fa altro che spegnere i servizi che utilizzano il filesystem prima di procedere con il dump della partizione. Nel nostro esempio viene preso in considerazione solo BackupPc ma se ci fossero altri servizi bisogna gestirli correttamente altrimenti il comando mount usato per smontare la partizione fallirebbe:

#!/bin/bash
# Esegue il backup di /mnt/data su nastro.
# Da rirpistinare con restore rf /dev/nst0 nella
# root della partizione 

#MYDIR=$(pwd)
#cd /

echo "Controllo esecuzione backup"
ps U 'backuppc' | grep -e 'BackupPC_' && \
	echo "Impossibile proseguire. Backup in corso." && \
	exit 0

echo "Stop ai servizi che accedono alla partizione"
/sbin/service backuppc stop
/sbin/service backuppc_httpd stop

echo "Smontaggio della partizione"
/bin/umount /mnt/data

echo "Controllo con fsck"
/sbin/fsck.ext3 /dev/vgData/Data

echo "dump della partizione su nastro"

#backup su nastro:
/sbin/dump -0 -a -f /dev/nst0 -b64 -j9 /dev/vgData/Data

#backup su file
#/sbin/dump -0 -a -f /mnt/repository/backuppc-dump.bz -b64 -j9 /dev/vgData/Data

echo "Montaggio della partizione"
/bin/mount /mnt/data

echo "Riavvio dei servizi che accedono alla partizione"
/sbin/service backuppc start
/sbin/service backuppc_httpd start

#cd $MYDIR
echo "Fatto."

Prima di eseguire il dump lo script controlla che non vi siano backup in esecuzione da parte dell’utente backuppc. Anche in questo caso se l’utente fosse diverso è necessario modificare il codice.
Il servizio backuppc_httpd è una istanza di apache modificata proprio per backuppc; per maggiori informazioni visitare questo link:

http://www.morzello.com/index.php/installare-backuppc-su-centos/

Se invece utilizzate l’istanza di default potete sostituire il servizio con httpd.
Per quanto riguarda la destinazione, se non aveste a disposizione una unità a nastro potete cambiare il percorso di destinazione ovunque vogliate. Prendendo come esempio il comando mount indicato in precedenza potremmo ad esempio creare un file sotto /mnt/repository

Alla prossima.

ReadyNas Duo e LVM

Qualche giorno fa è nata la necessità di espandere un ReadyNas Duo della Netgear dotato di disco da 500GB. L’intenzione era quella di sostituire il disco esistente con due dischi da 1TB. Il risultato è stato la perdita di tutti i dati (vedi post).

A questo punto ho deciso di fare a modo mio resettando il NAS non prima di aver fatto un backup del disco esistente da 500gb.

Per fare questo mi sono collegato in remoto al NAS ed ho impartito i comandi:

tar cvpzf /myshare/nas_pre_dsk_upg.tgz –exclude=/shareX –exclude=/shareY –exclude=/proc –exclude=/lost+found –exclude=/c –exclude=/tmp –exclude=/sys –exclude=/home /

Nel comando precendete le cartelle shareX e shareY sono condivisioni di rete.

Come vedremo in seguito questo backup non è strettamente necessario ma io ho sempre l’abitudine di salvare i files che mi servono in caso di necessità. Il comando prececedente serve sostanzialmente a preservare i files del NAS ad esclusione delle condivisioni (che possono essere tranquillamente copiate da un computer remoto). tar è utile perchè sul NAS oggetto di aggiornamento sono presenti diverse add-on per le quali non ho voglia di procedere alla reinstallazione tramite frontview.

Fatto il backup sostituisco il drive da 500GB con due dischi da 1TB e provvedo a resettare il NAS riportandolo alle impostazioni di fabbrica.
Segue la creazione di un nuovo RAID e l’installazione dell’unica add-on necessaria: ToggleSSH disponibile qui.

Sono riuscito a fare il ripristino del backup eseguendo sul NAS i comandi:

cd /
tar xzvf /nas_pre_dsk_upg.tgz

Il restore è andato liscio come l’olio.

Come dicevo prima, il ripristino dei rimanenti files può essere portato a termine mediante l’uso delle condivisioni di rete ma io ho deciso di ripristinare i files usando il disco da 500GB originale tramite porta USB ed un comune convertitore SATA/USB.

Chi volesse impiegare il metodo descritto di seguito ma non ha un convertitore può:

- usare un case esterno;
- clonare il disco di orinine usando dd su un HD esterno di capacità uguale o maggiore di quello sorgente;
- utilizzare una distribuzione live di linux che supporti LVM (ad esempio il disco di ripristino che accompagna fedora) ed un altro computer.

Ho diciso di pubblicare questo metodo perchè potrebbe sorgere la necessità di recuperare i dati da un volume non più utile.

Nel mio caso ad esempio, l’espansione del RAID portato a termine dal ReadyNAS Duo non è andato a buon fine, di conseguenza tutti i dati presenti nel vecchio RAID sono stati cancellati nel nuovo.

Potrebbe inoltre capitare di dover recuperare i dati da un NAS defunto.

I comandi che seguono sono utili anche per chi non possiede un ReadyNas Duo ma vuole recuperare file presenti in partizioni LVM di linux.

Chi volesse cimentarsi nel ripristino tramite altro computer (cioè smontando il disco dal NAS e montandolo su un altro PC dotato di Linux con supporto LVM) avrà una vita più comoda perchè non bisogna considerare alcuni aspetti come ad esempio la duplicazione dei Volume Group (VG).

Riprendendo il filo del discorso, dopo aver resettato il NAS è possibile collegare tramite porta usb il vecchio disco esterno; il NAS provvederà in piena autonomia a montare le partizioni trovate nella directory /USB.

Il comando mount dovrebbe produrre un output del tutto simile al seguente:

mount


/dev/hdc1 on / type ext2 (rw,noatime)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw)
sysfs on /sys type sysfs (rw)
tmpfs on /ramfs type ramfs (rw)
tmpfs on /USB type tmpfs (rw,size=16k)
/dev/c/c on /c type ext2 (rw,noatime,acl,user_xattr,usrquota,grpquota)
/c/home on /home/ftp/homes type bind (rw,bind)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/sda1 on /USB/USB_HDD_1_1 type ext3 (rw,noatime,acl)
/USB/USB_HDD_1_1 on /home/ftp/USB_HDD_1_1 type none (rw,bind)

Viene montata solo la partizione ext3 (USB_HDD_1_1) contenente tutti i files del NAS ad esclusione di quelli presenti nelle condivisioni di rete. Se non avere fatto il backup descritto in precedenza tramite tar, potete tranquillamente copiare i file presenti in /USB/USB_HDD_1_1 avendo l’accortezza di utilizzare il parametro -p (che preserva gli attributi dei files copiati).

Quello che però a noi interessa adesso è il recupero dei dati presenti nel LVM del disco che il NAS non ha montato. Quindi procediamo a verificare la tabella delle partizioni presenti sul disco:

fdisk -l /dev/sda


Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×00000000


Device Boot Start End Blocks Id System
/dev/sda1 1 255 2048000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 255 287 256000 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 287 60800 486064152 5 Extended
/dev/sda5 287 60800 486064151+ 8e Linux LVM

Con fdisk sappiamo che il disco presenta una partizione ext3 (già mondata su USB_HDD_1_1) una partizione di swap (non usata) ed una LVM (che contiene i dati a noi necessari).

Per visualizzare con maggior dettaglio le informazioni legate a LVM è possibile usare il comando pvscan:

pvscan


PV /dev/md2 VG c lvm2 [929.03 GB / 0 free]
Total: 2 [1.36 TB] / in use: 2 [1.36 TB] / in no VG: 0 [0 ]

Non ci sono tracce della partizione /dev/sda5. Questo perchè la scansione delle partizioni LVM da parte del ReadyNAS Duo è stata disabilitata. Basta dare una occhiata al file di configurazione presente in /etc/lvm/lvm.conf per capire che è stato attivato un filtro che evita la scansione di partizioni presenti su porta USB:

filter = [ "a|^/dev/hd[cegikmoq][5-9]$|”, “a|^/dev/hd[cegikmoq]1[0-5]$|”, “a|^/dev/md[2-9]$|”, “r|.*|” ]

Per risolvere il problema suppongo sia sufficiente commentare il filtro ma per essere più precisi è sufficiente apportare le dovute modifiche sostituendo la riga precedente con questa:

filter = [ "a|^/dev/sd[abcegikmoq][5-9]$|”,”a|^/dev/hd[cegikmoq][5-9]$|”, “a|^/dev/hd[cegikmoq]1[0-5]$|”, “a|^/dev/md[2-9]$|”, “r|.*|” ]

Dopo aver modificato il file, l’output del comando pvscan è diverso:

pvscan

PV /dev/sda5 VG c lvm2 [463.53 GB / 0 free]
PV /dev/md2 VG c lvm2 [929.03 GB / 0 free]
Total: 2 [1.36 TB] / in use: 2 [1.36 TB] / in no VG: 0 [0 ]

Adesso siamo in grado di vedere due VG invece che uno ma c’è un problema: entrambi hanno lo stesso nome: “c“. Questo vuol dire che non è possibile montare il volume senza mettere mano ai VG.

Per avere un maggior dettaglio sui VG presenti è possibile fare un controllo con vgdisplay:

vgdisplay

— Volume group —
VG Name c
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 463.53 GB
PE Size 32.00 MB
Total PE 14833
Alloc PE / Size 14833 / 463.53 GB
Free PE / Size 0 / 0
VG UUID q9L5G9-7Uuv-mg9m-9aqK-cOML-QziN-KzizYv

— Volume group —
VG Name c
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 929.03 GB
PE Size 32.00 MB
Total PE 29729
Alloc PE / Size 29729 / 929.03 GB
Free PE / Size 0 / 0
VG UUID fOsBiY-2J8W-d2tC-K0Xe-lRtz-ZRuZ-20IkVB

Montare il volume presente in /dev/sda5 comporta il riconoscimento del relativo VG. Per poter maneggiare il VG è necessario rinominarlo e per rinominarlo è necessario portarlo offline.

Il primo problema è quello di portare offline il VG perchè in caso di duplicazione dei nomi LVM darà la priorità agli array creati sul NAS e questo vanifica il tentativo. Ad esempio, eseguendo il comando vgchange il risultato sarà simile al seguente:

vgchange -a n c


WARNING: Duplicate VG name c: fOsBiY-2J8W-d2tC-K0Xe-lRtz-ZRuZ-20IkVB (created here) takes precedence over q9L5G9-7Uuv-mg9m-9aqK-cOML-QziN-KzizYv
Can’t deactivate volume group “c” with 1 open logical volume(s)
Can’t deactivate volume group “c” with 1 open logical volume(s)

Il comando precente tenta di portare offline il VG c ma poichè la precendeza viene data al volume con UUID fOsBiY-2J8W-d2tC-K0Xe-lRtz-ZRuZ-20IkVB il comando fallisce perchè attualmente il volume è usato dal sistema operativo (vedi comando mount eseguito in precedenza).

La cosa più veloce da fare è quella di smontare la partizione /c in modo da poter portare temporaneamente offline entrambi i VG:

/etc/init.d/frontview stop
/etc/init.d/samba stop
/etc/init.d/nis stop
/etc/init.d/proftpd stop

I comandi riportati in alto servono a fermare temporaneamente quei servizi che potrebbero utilizzare la partizione /c inibendo di fatto la possibilità di smondare la partizione /dev/c/c.

Adesso proseguiamo con lo smontaggio:

umount /c/home
umount /dev/c/c

Se lo smontaggio non dovesse funzionare è possibile verificare quali processi fanno uso della partizione tramite il comando fuser:

fuser -m /dev/c/c

Per ogni processo individuato da fuser è necessario procedere con:

kill -9 pid

dove pid è il numero segnalato da fuser. Prima di procedere accertarsi di non escludere un programma essenziale (come ad esempio la shell bash alla quale siamo collegati per impartire i comandi). A volte l’unità non viene smontata perchè il prompt attuale è in “/c” (o magari nella cartella home dell’utente anche essa montata sotto “/c”).

Fatto questo possiamo finalmente portare offile tutti i VG:

vgchange -a n

Se tutto è andato liscio è possibile ora rinominare il VG del vecchio disco specificando il corretto uuid che contraddistingue il gruppo:

vgrename q9L5G9-7Uuv-mg9m-9aqK-cOML-QziN-KzizYv d

Anche questo comando non dovrebbe creare problemi e con vgchange possiamo riportare i VG online:

vgchange -a y

Prima di riavviare il NAS facciamo una verifica finale sul lavoro con vgdisplay:

vgdisplay


— Volume group —
VG Name d
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 463.53 GB
PE Size 32.00 MB
Total PE 14833
Alloc PE / Size 14833 / 463.53 GB
Free PE / Size 0 / 0
VG UUID q9L5G9-7Uuv-mg9m-9aqK-cOML-QziN-KzizYv

— Volume group —
VG Name c
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 929.03 GB
PE Size 32.00 MB
Total PE 29729
Alloc PE / Size 29729 / 929.03 GB
Free PE / Size 0 / 0
VG UUID fOsBiY-2J8W-d2tC-K0Xe-lRtz-ZRuZ-20IkVB

Finalmente i gruppi hanno nomi differenti ed la loro gestione diventa possibile.

Dopo aver riavviato il NAS è possibile finalmente montare la partizione:

pvscan
mount /dev/d/c /USB/USB_HDD_1_1/c

Per ripristinare i files possiamo procedere con:

cd /USB/USB_HDD_1_1/c
cp -Rpv . /c/

Spero che questa piccola guida possa tornare utile a chi ha problemi di recupero dati da partizioni LVM. A volte le cose non sono complicate come sembrano.

Alla prossima.

Backup in Windows (Parte II – usare NT Backup)

La volta scorsa abbiamo parlato della teoria che sta alla base del backup.
In questo articolo invece vedremo come automatizzare il processo di backup per mezzo della utility NT Backup di Windows.

Eseguire NT Backup

Il programma per eseguire i backup in ambiente visuale si chiama ntbackup.exe e si trova nella cartella di sistema %windir%\system32\

Per eseguire l’applicativo è sufficiente sfogliare il menù seguendo il percorso:

Start -> Programmi -> Accessori -> Utilità di sistema

Qualora l’utility non fosse presente nel sistema è possibile installarla per mezzo del “Pannello di Controllo”, cliccando l’icona “Installazione Applicazioni”, quindi su “Installazione componenti di Windows” e selezionando la voce “Accessori ed Utilità” dall’elenco.

Prepariamoci ad un test
Prima di conoscere più da vicino l’utility di backup, prepariamoci a fare un test creando sul disco rigido una cartella nel percorso “c:\TestBackup”.
Entrando nella cartella creeremo un file di testo (anche vuoto va bene) che chiameremo semplicemente “file.txt”.
A questo punto cliccando con il tasto destro sulle poprietà del file e successivamente sul bottone “Avanzate…” dovremmo vedere una finestra simile a quella riportata in basso.



Come è possibile notare, il file appena creato ha un flag archivio impostato, cioè è pronto per essere incluso nel backup.

Procedura guidata di un backup completo
Nel primo esempio provvederemo a fare un backup completo schedulato una volta a settimana della cartella TestBackup.
Avviando NT Backup per la prima volta, verrà proposta una procedura guidata (wizard) che seguiremo fino al momento in cui ci verrà chiesto di selezionare i files da includere nel backup.

Avanti -> (Backup dei file e delle impostazioni) Avanti -> (Scelta elementi di cui eseguire il backup) -> Avanti



Selezionando la cartella TestBackup, il programma includerà automaticamente nella selezione anche i files e le sottocartelle in essa contenute. Questa funzionalità è utile quando ad esempio, verranno creati nuovi file all’interno della cartella, perchè non sarà necessario modificare la procedura di backup per consentirne il backup.

A questo punto dovremo indicare la locazione in cui salvare il risultato. Cliccando “Avanti >” comparirà una finestra in cui verrà chiesto un percorso ed un nome da dare al backup.
E’ importante soffermarsi un attimo su questo punto per chiarire bene le idee su cosa si intende per destinazione del backup.
Chi ha letto l’articolo precedente avrà appreso che in genere il backup viene eseguito su nastri.
NT Backup raggiona in questa ottica ed infatti supporta alcuni dispositivi a nastro. Non tutti gli utenti però dispongono di hardware dedicato, di conseguenza quello che viene creato alla fine del processo di backup è un file rappresentazione di un nastro.

Questo può sembrare curioso, ma facendo il backup ci si accorgerà che nel percorso indicato come destinazione non vi sarà nient’altro che un file con estensione bkf (BacKup File).
L’utente ora sa che i file con questa estensione sono come nastri in cui è possibile aggiungere e sovrascrivere backup, un po’ come avviene con le cartelle compresse di Windows che altro non sono che files compressi con estensione zip.

Torniamo al nostro programma di backup cliccando ancora sul bottone “Avanti…”

A questo punto, cliccando su “Fine” verrà effettuato il backup ma quello che noi vogliamo è una schedulazione settimanale, per questo motivo cliccheremo su “Avanzate…”

Selezioneremo un backup normale che è un sinonimo di completo e richiederemo la sostituzione dei file esistenti sul volume (file bkf) perchè abbiamo optato per un solo backup completo. Questo vuol dire che sul nostro nastro virtuale vogliamo avere un solo backup che ogni settimana deve essere sovrascritto.

Di seguito viene indicato il percorso da seguire:

(Normale) Avanti -> (Verifica i dati dopo il backup) Avanti -> (Sostituisci i backup esistenti ) Avanti

Fino ad arrivare alla finestra indicata di seguito:



Giunti a questo punto, compiliamo il form come indicato nella figura e premiamo il tasto “Imposta pianificazione…”.

Lasciamo un attimo da parte NT Backup per parlare di un’altra funzionalità di Windows chiamata “Operazioni Pianificate”

Questa utilità serve ad automatizzare/schedulare i processi di Windows senza dover necessariamente richiedere l’intervento dell’utente.
Per chi ha dimestichezza con i sistemi Unix like, essa ricopre le stesse funzionalità del demone Crond.

Anche questo programma può essere raggiunto tramite il menù di Windows nella locazione in cui si trova NT Backup. Anche il percorso su disco fisso è il medesimo ed il nome dell’eseguibile è at.exe.

Lo scopo di questo articolo non è quello di mostrare tutte le peculiarità del comando at ma per restare in tema, faremo in modo che il processo di backup appena definito venga eseguito dal sistema operativo ogni settimana senza dover richiedere alcun itervento da parte dell’utente. Ciò vuol dire che questo processo partirà anche se sulla macchina non vi è autenticato nessuno.

Alla luce di quanto detto in precedenza, prendiamo spunto dall’immagine riportata in basso per compilare i campi della finestra.



Lasciamo da parte tutte le altre opzioni della finestra e clicchiamo su “Ok” tornando alla finestra di NT Backup. Anche qui non vi è nulla da specificare, quindi concludiamo cliccando su “Avanti >”.

In base al sistema operativo in uso, potrebbe comparire una finestra in cui viene richiesto di specificare le credenziali (login e password) dell’utente.
La spiegazione risiede nel fatto che la schedulazione deve essere libera di entrare in esecuzione anche se l’utente che l’ha creata non è attualemnte autenticato sulla macchina. Se vi è necessità, è possibile specificare un utente diverso dal nostro o addirittura l’utente NT Authority\System un utente “invisibile” con cui Windows gestisce il sistema operativo.

Conclusa la procedura guidata controlleremo la nuova schedulazione seguendo il percorso del menù:

Start -> Programmi -> Accessori -> Utilità di sistema -> Operazioni Pianificate

Se tutto è andato per il verso giusto, selezionando la voce “Backup Completo” e cliccando con il tasto destro su “Esegui” è possibile vedere l’esecuzione del nostro backup.

Cosa è cambiato nel frattempo
Controllando adesso il flag archivio del file contenuto nella cartella TestBackup noteremo che non è impostato. Eseguendo un backup completo, il programma ha provveduto a rimuovere correttamente i flag.

Procedura guidata di un backup incrementale
Adesso che abbiamo un backup completo da eseguire al lunedì, passiamo alla creazione di un backup incrementale da eseguire in tutti gli altri giorni della settimana.

Il procedimento è in tutto e per tutto simile a quello utilizzato per la creazione del Completo. Le uniche differenze sono le seguenti:

  • File bkf – Poichè si tratta di un backup incrementale, è meglio utilizzare un altro nastro per contenenre i backup, potremmo chiamare il file bkp con un nome diverso senza alterare la locazione di destinazione.
  • Tipo di backup – Questa volta specificheremo un backup Incrementale invece che normale
  • Aggiunta/Sostituzione dei backup sul supporto – Mentre nel caso del Completo volevamo sovrascrivere il backup, in questo caso è fondamentale accodare i backup nel supporto, altrimenti non saremmo in grado di procedere ad un corretto ripristino. Attenzione! Quanto specificato in questo esempio è solo un modo semplice di procedere. In un mondo ideale bisognerebbe avere un pool di backup, questo vuol dire che di norma sono necessari almeno due backup completi (con i relativi incrementali) altrimenti un errore durante la creazione del backup comprometterebbe anche il precedente.
  • Pianificazione del processo – Creeremo una schedulazione con gli stessi paramentri specificati per il Completo ma provvederemo a selezionare tutti i giorni della settimana escluso il lunedì.

A questo punto nell’elenco delle operazioni pianificate dovremmo trovare due task, uno per il backup completo ed uno per il backup incrementale.

Prima di provare l’esecuzione del secondo task, torniamo nella cartella TestBackup e creiamo un secondo file di testo con il nome file2.txt. Fatto questo possiamo procedere con l’esecuzione del task incrementale ed anche in questo caso, se tutto è ok, dovremmo vedere l’esecuzione del backup.

Il ripristino dei dati
E’ inutile dire che il test non finisce qui. Non bisogna mai commettere l’errore di pensare che un backup sia corretto finchè non sia stato tentato il ripristino almeno una volta.
Pertanto adesso provvederemo a ripristinare i files della cartella TestBackup nella stessa o in un’altra locazione.

Probabilmente il metodo più veloce per fare il ripristino di un file bkf è quello di cliccare due volte sul file.

Così facendo torneremo nel wizard di NTBackup ma questa volta selezioneremo l’opzione “Ripristino dei file e delle impostazioni”.

Muovendoci attraverso i bottoni, ci soffermeremo sulla finestra riportata di seguito.



Come è possibile vedere nell’elenco ci sono diversi supporti tra cui scelgiere. Selezioniamo il supporto usato per il Completo e spuntiamo l’intero contenuto del backup.
Cliccando su “Avanti >” e quindi su “Avanzate” è possibile decidere le modalità di rispistino. Nel nostro caso è possibile selezionare una qualunque opzione.

Sfogliando invece il contenuto del file bkf utilizzato per l’incrementale, l’utente noterà che solo il file file2.txt è stato incluso. Questo a conferma di quanto imparato dalla teoria.

Conclusioni
Questo articolo finisce qui. Il mio consiglio è quello di sperimentare le altre opzioni a disposizione per trovare una soluzione ottimale alle proprie necessità.
Spero di non avervi annoiato troppo.

Alla prossima.

Per saperne di più
Backup In Windows (Parte I – La Teoria)

Backup in Windows (Parte I – La teoria)

Ho notato che sono veramente poche le persone che dedicano il tempo necessario per fare il backup dei dati importanti. Spesso ricevo telefonate da parte di amici e parenti che mi chiedono: Hai per caso un disco di ripristino per Windows? il computer non si accende più. Come se io avessi una cassaforte con dentro un disco di ripristino per tutto il mondo.
In realtà la maggior parte degli utenti sa che è necessario fare il backup, ma non ha tempo di farlo oppure non sa come farlo.

Questo articolo è dedicato a chi vuole mettere in piedi un sistema pratico e veloce per fare il backup.

Il metodo più banale per fare un backup è quello di fare una copia da un dispositivo ad un’altro, possibilmente removibile. E’ il caso in cui ad esempio si vuole fare una copia di files su una chiavetta usb o hard disk esterno.
Si tratta di una soluzione veloce ma non di certo ottimale; ci sono alcuni fattori da tenere in considerazione:

  • Per garantire un ripristino sicuro bisognerebbe fare la copia dei dati ogni giorno; ciò significa che l’utente deve ogni giorno selezione e copiare i files a mano. Esiste un comando DOS, chiamato copy in grado di fare la copia di uno o più files ma non consente la copia delle sottocartelle, di conseguenza risulta poco pratico (per ogni sottocartella è necessario impartire un comando copy). In realtà esiste anche un altro comando per fare una copia, una sorta di comando copy avanzato ma di questo ne parleremo più avanti.
  • Nel caso in cui venga utilizzata sempre la stessa locazione come destinazione della copia, molti files verranno sovrascritti, di conseguenza si perde la cronologia dei cambiamenti e l’impossibilità di recuperare una versione precedente del file.
  • Optando per una locazione differente ad ogni copia, nella destinazione verranno copiati sempre tutti i files, anche quelli che non sono stati modificati nella copia precedente con una inutile perdita di spazio.

Fatta questa osservazione, procediamo con un po’ di teoria.

Lo scopo di fare il backup è sostanzialmente quello di poter tornare indietro qual’ora le cose dovessero andare male. Per tornare indiero nel tempo è necessario disporre di tutti files e delle loro modifiche nel tempo.
In teoria, tutti i file di nuova creazione e quelli modificati, dovrebbero entrare a far parte del backup.

Le diverse tipologie di backup
Esistono sostanzialmente quattro tipi di backup:

  • Completo – è una copia di tutti i files, indipendentemente dal fatto che questi siano stati modificati o meno. Viene generato per essere certi di poter ripristinare in futuro tutti files. In parole povere, ripristinare un backup completo equivale a tornare in dietro nel tempo alla data in cui lo stesso è stato generato.
  • Incrementale – è una copia dei soli files che sono stati creati/modificati dopo aver fatto l’ultimo backup. Di conseguenza garantisce solo un ripristino parziale. Per poter ripristinare la sistuazione aggiornata è necessario disporre del backup completo e di tutti gli incrementali fatti.

    Supponiamo di avere un backup a cadenza giornaliera suddivisa nel modo seguente:

    Lun – Completo
    Mar – Incrementale
    Mer – Incrementale
    Gio – Incrementale
    Ven – Incrementale
    Sab – Incrementale
    Dom – Incrementale

    Supponiamo inoltre che sia domenica e che vi sia la necessità di ripristinare i dati aggiornati; è necessario disporre del backup completo del lunedì e di tutti gli incrementali, da martedì a domenica.

  • Differenziale – è una copia dei soli files che sono stati creati/modificati dopo aver fatto l’ultimo backup completo. Di conseguenza garantisce solo un ripristino parziale. Per poter ripristinare la situazione aggiornata è necessario disporre del backup completo e dell’ultimo differenziale.

    Supponendo di avere un backup a cadenza giornaliera suddivisa nel modo seguente:

    Lun – Completo
    Mar – Differenziale
    Mer – Differenziale
    Gio – Differenziale
    Ven – Differenziale
    Sab – Differenziale
    Dom – Differenziale

    qual’ora ci fosse la necessità di ripristinare i dati alla domenica, è necessario disporre del backup completo del lunedì e del differenziale del giorno (domenica).

  • Giornaliero – è la copia dei soli files che sono stati creati/modificati nel giorno in cui il backup viene eseguito. Perchè risulti efficiente è necessario eseguire il backup giornaliero ogni giorno.

Fermiamoci un attimo per fare alcune considerazioni. In primo luogo l’utente potrebbe pensare che dal momento che per fare un ripristino sicuro è necessario un backup completo, tanto vale fare ogni giorno un backup completo per stare tranquilli. Fare un backup completo ogni giorno ovvero a cadenza regolare (es: settimanale, mensile, annuale, …) equivale a fare un copia/incolla dei files in cartelle di destinazione diverse (sistema poco pratico che occupa tanto spazio).
Sia il differenziale che l’incrementale consentono di salvare spazio poichè copiano solo i files che vengono modificati. L’unica differenza sta nel fatto che l’incrementale non copia i files creati/modificati dall’ultimo backup completo, se questi sono già stati inclusi in un altro backup incrementale eseguito in precedenza.

Tutte le tipologie di backup hanno ragione di esistere ed escludendo il backup giornaliero, direi che tutti sono complementari per ottenere una politica di backup efficace e sicura.

L’attributo Archivio
Probabilmente vi chiederete come viene gestita la creazione/modifica dei files dal sistema operativo dal momento che la data di creazione e modifica di un file viene presa in esame solo da un backup giornaliero.
Windows, o per meglio dire il DOS, imposta una serie di attributi per ogni file. I più importanti vengono elencati di seguito:

  • Sola Lettura – I files con questo attributo non possono essere modificati/eliminati se non previa rimozione dello stesso.
  • Sistema – I files con questo attributo sono da ritenersi vitali per il corretto funzionamento del sistema operativo. Pertanto è doveroso fare attenzione prima di rimuovere un file “di sistema” dal proprio disco.
  • Nascosto – I files con questo attributo non vengono di norma elencati all’interno di Gestione Risorse. Per visualizzare questi files è necessario modificare le impostazioni predefinite.
  • Archivio – I files con questo attributo si presume siano stati modificati dopo aver eseguito un backup completo/incrementale.

Per visualizzare gli attributi di un file è possibile utilizzare il comando attrib in dos oppure cliccare con il tasto destro sul file e scegliere proprietà in gestione risorse.
Ad ogni modo il flag che indica “teoricamente” se un file è stato già incluso in un backup oppure no è il flag archivio. Teniamo a precisare “teoricamente” perchè nessuno vieta di modificare a piacimento gli attributi di un file.

Non resta che spiegare come l’attributo archivio venga impiegato durante il processo di backup.

  • Backup Completo – Per fare un backup completo è necessario considerare tutti i files, indipendentemente che abbiamo l’attributo archivio impostato o meno. Se presente, l’attributo archivio viene rimosso.
  • Backup Incrementale – Per fare un backup incrementale è necessario considerare solo i files che presentano l’attributo archivio. I files considerati perdono l’attributo dopo il backup.
  • Backup Differenziale – Per fare un backup differenziale è necessario considerare solo i files che presentano l’attributo archivio. I files considerati non perdono però l’attributo dopo l’esecuzione del backup.
  • Backup Giornaliero – Non tiene assolutamente conto dell’attributo archivio.

Concludiamo con la teoria
Alla luce di quanto abbiamo affermato prima, possiamo implementare un backup che mantenga una certa cronologia delle modifiche (completo+incrementale/i) oppure un backup salvaspazio che tenga tutto il necessario per ripristinare i files correnti (completo+differenziale). Ad ogni modo per implementare un backup generalmente è necessario tenere presente:

  1. La frequenza – Prima di tutto è necessario stabilire la cadenza degli internventi. Per fare ciò bisogna considerare i files oggetto del backup. Se questi vengono modificati di frequente e si vuole mantenere un certo dettaglio nel backup, allora si sceglierà una cadenza oraria o giornaliera; se i dati invece cambiano meno frequentemente, si opterà per backup con cadenza settimanale, mensile e così vià, l’importnate è trovare il giusto equilibrio.
  2. Lo storico – Se vogliamo avere la facoltà di ripristinare un file eliminato/modificato che non è più presente nel backup corrente allora è necessario conservare uno o più cicli di backup. Ad esempio potremmo decidere di conservare gli ultimi quattro backup settimanali per avere uno storico di un mese. Il quinto backup andrebbe a sostituire il primo e così via.
  3. Il supporto – Non tutti i supporti sono uguali quando parliamo di backup. Le grandi aziende usano le così dette unità a nastro. Si tratta di dispositivi simili ad audio cassette e create proprio per questo scopo. E’ ovvio che per implementare un backup a basso costo non è necessario munisri di unità a nastro, ma sicuramente una chiavetta usb o un cdrom non sono certo affidabili come un DAT (Digital Audio Tape).
  4. La conservazione – Infine parliamo di conservazione in senso figurato ed in senso fisico. Figurato perchè è inutile conservare i file sullo stesso supporto/computer sul quale risiedono i file; fisico perchè il luogo in cui conserveremo il backup deve essere scelto con cura. Eviteremo dunque di lasciare i supporti alla luce diretta del sole o nelle vicinanze di fonti di calore. Per una maggiore sicurezza è bene tenere il backup lontano dal luogo in cui si trovano i file (pensate ad incendi ed allagamenti) e lontano da occhi indiscreti (meglio se messi sotto chiave). I perfezionisti faranno sempre almeno due copie dello stesso backup su supporti diversi che verranno conservati in luoghi diversi (questo per confermare ancora una volta che la sfortuna ci vede benissimo).

Nei prossimi articoli vedremo quali sono gli strumenti che Windows mette a disposizione dell’utente per gestire il backup.

Per il momento è tutto.
Alla prossima.

Backup via ftp senza usare il solito client

Il titolo di questo articolo la dice lunga.
Non smetterò mai di dire quanto sia importante fare il backup dei propri dati.
Oggi presento una soluzione per chi non è dotato di masterizzatori, unità a nastro, chiavette usb ed hard disk esterni.
Se possedete una buona quantità di spazio su un server remoto, allora potreste prendere in considerazione la possibilità di fare un backup strutturato per mezzo del buon vecchio protocollo ftp.

Chi opera in ambito IT sicuramente conoscerà questo protocollo. Una volta era molto utilizzato, oggi è stato in parte superato dall’avvento dell’http e del moderno bittorrent.
Resta comunque un modo del tutto valido per lo scambio di files su Internet.
Esistono client di ogni genere e per tutti i sistemi operativi. Si va dal browser web ai client distribuiti con il sistema operativo. Insomma i modi per sfruttare l’ftp non sono pochi.

Per fare un buon backup senza dover perdere ore nel programmare i vari client ci vorrebbe una soluzione semplice.
Forse non tutti sanno che è possibile interrogare un server ftp mediante la Gestione Risorse di Windows, proprio come se fosse una connessione di rete. Un apposito wizard è raggiungibile tramite il menu:

Strumenti > Connetti unità di rete… > Iscriversi ad un servizio di archiviazione…

Seguendo le istruzioni a video è possibile sfogliare le cartelle del sito remoto cliccando l’icona: Risorse di rete.

Questa soluzione consente di sfruttare il server ftp per fare il backup al pari di altre periferiche di archiviazione (hard disk, chiavette usb, …).

NetDrive. Montare un sito ftp in locale
Volgliamo spingerci oltre però, dando la possibilità all’utente di poter usufruire del sito ftp tramite l’assegnazione di una lettera, proprio come avviene per le periferiche locali.
A questo proposito ho pensato a NetDrive, un prodotto freeware di Novell che consente di associare una lettera ad un sito ftp mediante semplici operazioni.
In realtà questo tool è molto ben articolato e consente di definire diversi parametri come ad esempio la conversione dei files tra client e server oppure la definizione di una periferica a cui possono accedere tutti gli utenti locali.
Questo articolo però non vuole essere un tutorial sull’uso di questo tool, anche perchè su Internet esistono tanti siti che trattano l’argomento per i quali basta fare una ricerca.

Per montare localmente un sito ftp è sufficiente cliccare su “Nuovo sito” ed indicare i parametri di connessione. A questo punto è possibile compilare tutti gli altri parametri richiesti come ad esempio: login, password, lettera, …
Chi volesse può spuntare l’apposito flag per riconnettere la periferica al riavvio del sistema operativo.

Montare un sito ftp su Linux
Gli utentui di Windows saranno soddisfatti ma cosa possono fare gli amanti del pinguino?
Linux non si smentisce mai ed ovviamente le possibilità di manovra sono molto più elevate. C’è da dire però che non tutte le distribuzioni supportano il montaggio in locale di siti ftp.

Stiamo parlando di ftpfs (FTP File System): un modulo del kernel che permette di gestire i contenuti di un sito ftp per mezzo del ben noto comando mount.

ftpfs è un progetto oggi superato da un altro chiamato LUFS (UserLand FileSystem) che consente di utilizzare connessioni sicure tramite SSH su server SFTP.

Utilizzare questo modulo è molto intuitivo.
Chi ha installato sulla propria distribuzione autofs/automount può utilizzare la cartella /mnt/ftpfs per accedere al sito ftp tramite il comando:

cd /mnt/ftpfs/[user:pass@]ftp_server[:port]

dove user, pass, ftp_server e port sono i parametri di connessione.
Un altro metodo semplice prevede l’impiego del comando ftpmount:

ftpmount ftpuser@ftp.mysite.org /mnt/ftpfs -uid=500 -gid=500 -dmask=555

Anche in questo caso i parametri disponibili sono tanti ma sostanzialmente si tratta di specificare il modo in cui la cartella locale deve essere mappata nel sistema operativo.

Infine come abbiamo detto in precedenza è possibile utilizzare il comando mount specificando il tipo di flie system appropriato (-t ftpfs)

mount -n -t ftpfs none /mnt/ftpfs -o ip=192.168.0.1,user=ftpuser,pass=ftp_pass

Questo articolo si conclude qui. Di cose da dire ce ne sarebbero ancora molte ma penso che questa piccola guida sia utile come punto di partenza.

Alla prossima.

Per saperne di più
Scarica NetDrive
Introduzione a NetDrive
Il progetto FTP File System

dd, gzip, netcat. Backup e Cloning di un hard disk

Spesso mi capita di dover mettere le mani su sistemi che necessitano di pesanti modifiche.
Quando capita mi piace stare con le spalle coperte, per questo motivo, onde evitare di rovinare qualche dato sensibile, la prima cosa che faccio è clonare il disco fisso.
Ci sono in circolazione una miriade di applicativi in grado di svolgere la mansione ma nessuno mi soddisfa in pieno, vuoi per via delle licenze, vuoi perchè alcuni necessitano di installazione oppure sono dipendenti dal sistema operativo.
Poichè il tempo a mia disposizione è sempre risicato, bisogna trovare una soluzione semplice ma efficace.
Chi lavora su sistemi Unix like sa bene che esistono strumenti validi disponibili direttamente dalla console.

Usare dd
dd è un comodo comando che prende un file in input (parametro if) e lo copia, in un file di output (parametro of).
Questa copia avviene bit per bit senza alcuna modifica, di conseguenza utilizzabile per diversi scopi. Poichè nei sistemi *nix, l’hard disk come tutto del resto, viene visto come un file, dd può essere utilizzato per fare una clonazione.
Abbiamo detto che dd fa una copia bit per bit, di conseguenza è facile intuire che non si tratta di una soluzione salvaspazio.
Possiamo fare molto per ridurre lo spazio necessario all’operazione ma di questo ne parleremo più avanti in questo articolo.
Per copiare il contenuto di un disco (ad esempio hda) su un’altro disco (ad esempio hdb), basta eseguire il seguente comando:

dd if=/dev/hda of=/dev/hdb

Non c’è bisogno di ricordare che hdb deve essere di dimensioni uguali o maggiori di hda.

Per ripristinare la copia del disco basta sostituire il parametro if con il parametro of:

dd if=/dev/hdb of=/dev/hda

Se volessimo copiare il contenuto del disco in un file, il comando sarebbe:

dd if=/dev/hda of=/home/user/myfile.bin

Ovviamente il file di destinazione deve essere creato su un disco diverso da quello che intendiamo clonare.
Tornando al discorso dello spazio, è possibile dirigere l'output verso gzip prima di salvare l'immagine su file ma bisogna tenere in considerazione che sul disco sono presenti sia i files validi che quelli eliminati. Per questo motivo, se il disco è stato utilizzato per diverso tempo, gzip potrebbe essere poco efficiente anche in caso di dischi con tanto spazio a disposizione.
A dare una mano in questo senso arriva ancora una volta dd.
Quello che dobbiamo fare è creare un file dummy in ogni partizione del disco in modo da ripulire tutto lo spazio disponibile:

dd if=/dev/zero of=/mnt/part1/dummyfile; rm -f /mnt/part1/dummyfile
dd if=/dev/zero of=/mnt/part2/dummyfile; rm -f /mnt/part2/dummyfile
...
dd if=/dev/zero of=/mnt/partN/dummyfile; rm -f /mnt/partN/dummyfile

E' assolutamente corretto che ogni comando si concluda con un errore per spazio su disco insufficiente ma ricordate sempre di eliminare i dummyfile altrimenti non ci sarà più spazio sulla partizione.

A questo punto possiamo utilizzare gzip per comprimere il file immagine:

dd if=/dev/hda | gzip -9 > /home/user/myfile.bin.gz

Il comando per ripristinare l'immagine sul disco è il seguente:

gzcat -dc /home/user/myfile.bin.gz | dd of=/dev/hda

Usare netcat
Chi non possiede un disco esterno per compiere le operazioni di clonazione si può affidare a netcat un comando del tutto simile a cat ma destinato alla rete.
Chi vuole adoperare questo metodo deve necessariamente avere la possibilità di comunicare con un altro computer.

Per prima cosa predisponiamo il computer ricevente alla ricezione dell'immagine:

nc -l 4000 | dd of=/home/user/myfile.bin.gz

Il parametro -l mette netcat in ascolto sulla porta indicata dal parametro -p. Tutto ciò che netcat riceve sarà diretto al file /home/user/myfile.bin.gz grazie a dd.

Dall'altro lato invece non dobbiamo far altro che inviare tutti bit verso netcat:

dd if=/dev/hda | gzip -9 | nc 192.168.0.1 4000

Nel nostro esempio l'indirizzo ip del ricevente era 192.168.0.1.

Infine per ripristinare il tutto basta invertire i comandi sui due computer ed utilizzando l'hard disk come destinatario del comando dd:

dd if=/home/user/myfile.bin.gz | nc 192.168.0.1 4000

per inviare il file e

nc -l -p 4000 | gzcat -dc | dd of=/dev/hda

per clonare il disco.

Gli utenti di Windows che desiderano fare il cloning del disco seguendo questa guida possono utilizzare una qualsiasi distribuzione live di Linux come ad esempio Knoppix o Slax.

Uso avanzato di dd
Spesso capita di voler spezzare l'immagine creata con dd in file più piccoli, magari perchè si desidera utilizzare un masterizzatore oppure per ovviare al limite dei 2 giga imposto dalle partizioni FAT di windows.
Comunque sia è possibile spezzare l'immagine creata con dd specificando alcuni parametri aggiuntivi.

dd if=/dev/hda of=/home/user/myfile_01.bin bs=1024 count=1000000

Con il comando precendente si chiede a dd di creare un file da 1GB scrivendo un'immagine contenente 1000000 blocchi da 1024 byte.

dd if=/dev/hda of=/home/user/myfile_02.bin bs=1024 count=1000000 skip=1000000

Tramite il parametro skip chiederemo a dd di saltare i primi 1000000 blocchi prima di iniziare a copiare i dati sul secondo file.
Continueremo in questo modo fino a quando l'intero disco verrà copiato.
Questi parametri sono utili anche con netcat ad esempio quando la connessione tra client e server viene interrota per qualche motivo.
Qual'ora ci fossero problemi di questo tipo, non è necessario riprendere la copia dall'inizio ma e sufficiente controllare quanto dd ha già copiato e riprendere la copia dall'ultimo blocco copiato.
La prima cosa da fare è calcolare quanti blocchi sono già stati copiati nell'immagine. Mediante il comando ls -l è possibile vedere la lunghezza del file immagine; sarà sufficiente dividere questo valore per il parametro bs impartito a dd. Nel caso in cui il parametro bs non sia stato specificato, bisognerà divirere il valore per 512 (valore di default).
Per riprendere la copia sarà sufficiente specificare il parametro skip impostando il risultato ottenuto dalla divisione.

Questo è tutto, spero come al solito di non avervi annoiato troppo.

Alla prossima.