Consulenze tecnologiche e informatiche

Autotask e robocopy insieme per il backup

Autotask e robocopy insieme per il backupCome sempre le battaglie di configurazione dei computer si fanno più complesse quanto più sono banali le azioni da compiere sulle postazioni di lavoro.

 

In questo caso lo scopo della sperimentazione era mirato a far compiere ad Autotask Endpoint Managment (AEM) le azioni svolte dallo schedulatore di sistema di Microsoft Windows per eseguire un batch con lo scopo di salvare degli specifici dati del computer nel server centrale.

 

La decisione è stata presa per far fronte ai regolari disservizi dello schedulatore di Microsoft Windows, uno dei più noti quello del cambio della password del profilo associato alla pianificazione.

 

Ecco quindi un semplice componente di AEM per pianificare i backup sulle postazioni di lavoro usando il diffuso componente robocopy.

 

Cosa fa il componente

 

Dovendo sviluppare uno specifico componente ho deciso di renderlo versatile e di fornirgli un minimo di parametri di configurazione per poter avere dei backup adatti a diverse esigenze.

 

Nella versione proposta le funzionalità sono le seguenti:

  • Percorso da salvare (da disco esterno, chiavetta o percorso di rete UNC)
  • Percorso di destinazione (su disco esterno, chiavetta o percorso di rete UNC)
  • Aggiornamento di un backup in percorso fisso (Mirror con purge) o in cartelle distinte per data
  • Impostazione del numero massimo di backup storici (legato all’opzione precedente)
  • Possibilità di arrestare un servizio prima del backup con riavvio al termine
  • Invio del output del robocopy nello stdout di AEM via e-mail

Le variabili del componente

 

Variabili del componente

Variabili del componente

Andiamo subito alla struttura del codice che costituisce il componente realizzato, prima di tutto definiamo le variabili che devono essere fornite per l’esecuzione.

 

  • service – tipo Value
    Permette di specificare il nome del servizio da arrestare prima di eseguire il backup e da avviare al termine, usa il comando net stop e net start.
  • source e destination – tipo Value – Obbligatorio
    Contengono rispettivamente il percorso da sottoporre a backup e il percorso di salvataggio dei dati.
  • multiple – tipo Bolean – Default False
    Di default assume il valore false ed esegue il salvataggio sempre nella medesima cartella creando un mirror senza uno storico, con l’opzione true crea ad ogni esecuzione una cartella di backup nel percorso specificato in destination con il nome della data corrente (destination\data). Lavora in combinazione con la variabile history.
  • history – tipo Value
    Di default non assume alcun valore, permette di specificare il numero di giorni di backup storico da mantenere, utile quando si usa la variabile multiple per attivare lo storico (True). Se non impostata crea un numero illimitato di backup storici fino al riempimento del supporto.
  • xDir e xFile – tipo Value
    Forniscono rispettivamente al componente robocopy la lista di cartelle e di file da non sottoporre a backup.

 

Il codice del componente

 

Il componente di backup

Il componente di backup

Possiamo ora procedere con l’analisi del codice che costituisce il componente, come sempre si tratta di comandi facenti parte dei batch in riga di comando (CMD) di Microsoft Windows.

 

Come prima azione controlliamo che i campi che specificano i percorsi sorgente e destinazione siano stati compilati, non viene eseguito un controllo di coerenza ed esistenza dei valori specificati sui sistemi coinvolti. Il controllo avviene al momento del esecuzione del componente e non durante la sua configurazione.

 

  • if NOT DEFINED source goto WEND
  • if NOT DEFINED destination goto WEND

 

Nel caso in cui uno dei due valori non sia stato inserito lo script ritorna errore e si conclude.

 

La presenza del carattere backslash (\) al termine del percorso è fonte di malfunzionamento del componente robocopy, andiamo quindi a controllare che i percorsi inseriti ne siano privi ed in caso lo rimuoviamo.

 

  • if %source:~-1%==\ SET source=%source:~0,-1%
  • if %destination:~-1%==\ SET destination=%destination:~0,-1%

 

Decidiamo che tipo di backup eseguire valutando lo stato della variabile multiple, se il suo stato è false, quindi un semplice mirror dei contenuti, passiamo allo STEP1 evitando le azioni di pulizia dello storico e di associazione dell’estensione del nome della cartella.

 

  • if %multiple% == false goto STEP1

 

Nel caso in cui sia nostro interesse avere uno storico, quindi la variabile multiple è nella condizione true, procediamo con il controllo dell’esistenza di un limite allo storico, la presenza di un valore numerico nel campo history innesca la cancellazione delle cartelle più vecchie del numero di giorni specificato.

 

  • if DEFINED history (
  •   FORFILES -p “%destination%” /S /D -%history% /C “cmd /c IF @isdir == TRUE rd /S /Q @path”
  • )

Le cartelle rimosse sono quelle contenute all’interno del percorso di destinazione e create con il nome ricavato dalla data in cui è stato eseguito il salvataggio.
Per creare il percorso di salvataggio nel caso di backup multipli andiamo ad estrapolare la data di sistema, che assume il formato AAAAMMGG.

 

  • for /F “usebackq tokens=1,2 delims==” %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if ‘.%%i.’==’.LocalDateTime.’ set ldt=%%j
  • set ldt=%ldt:~0,8%

 

Ottenuta la data del backup la rendiamo una cartella contenuta nel percorso predefinito.

 

  • set destination=%destination%\%ldt%

 

Arrivando da una richiesta di backup di tipo mirror, ovvero con l’attributo false nella variabile multiple ci troviamo direttamente a questo punto, dove verifichiamo la presenza di un servizio da fermare indicato nella variabile service.

 

  • :STEP1
  • if NOT DEFINED service goto STEP2
  • net stop “%service%”

 

In mancanza di servizi da arrestare passiamo direttamente allo STEP2 e alle operazioni di backup.
Le operazioni di backup sono valide per ogni tipo di impostazione. La presenza di contenuti nelle variabili di esclusione delle cartelle (xDIR) e di esclusione dei file (xFILE) attiva la creazione di una variabile usabile dal componente robocopy. Per la sintassi del componente robocopy si rimanda alla guida online.

 

  • :STEP2
  • if DEFINED xDIR (
  •   set xDIR=/XD %xDIR%
  • )
  • if DEFINED xFILE (
  •   set xFILE=/XF %xFILE%
  • )
  • robocopy /mir “%source%” “%destination%” %xDIR% %xFILE% /W:5 /R:2 /NP

 

Per concludere facciamo ripartire il servizio di cui abbiamo richiesto l’arresto prima del backup e quindi chiudiamo la procedura andando in END.

 

  • if DEFINED service (
  •   net start “%service%”
  • )
  • goto END
  • :WEND
  • exit /B 1
  • :END
  • @echo on

 

Con questo si conclude il componente in questa sua versione di base.

 

Dal backup al restore

 

La creazione di un backup implica che in qualche momento futuro possa essere necessario eseguire un restore, pertanto potrebbe servire un componente per svolgere questa funzione.
La realtà è che non serve un ulteriore componente, infatti l’uso di un elemento come robocopy rende possibile usare il medesimo componente anche per l’operazione inversa, nel caso di restore dovremo semplicemente invertire tra loro i percorsi source e destination oltre che impostare a false il valore della variabile multiple.

 

Qui puoi scaricare il componente di base.

 

Buon sonno!

 

 

Categorie
Archivi
Count per Day
  • 157Questo articolo:
  • 172849Totale letture:
  • 28Letture odierne:
  • 281Letture di ieri:
  • 21 novembre 2016Dal:
Iscriviti alla Newsletter
Iscriviti alla nostra newsletter ed unisciti ai nostri iscritti.

Seleziona lista (o più di una):




Trattamento dei dati