Programma di Backup

« Older   Newer »
  Share  
Ikezawa
CAT_IMG Posted on 28/12/2010, 23:03     +1   -1




Su richiesta ho creato questo script .
Un programma di backup che copia i file non più vecchi di un giorno (impostabile) con tempo di schedule,log,cartelle impostabili..Se può servire :)
CODICE
#include <Date.au3>

;~ Copia i files il giorno seguente da una cartella di origine in una cartella creata con la stessa data dei files.
;~ esempio copia i files dalla cartella "origine" del 27/12/2010 in una cartella nominata 27_12_2010.Tutto questo solo il
;~ giorno seguente ( 28/12/2010)
;~ Tempo di schedule impostabile
; Cartella origine,Destinazione,numero di ore dalla creazione del file di origine impostabile
;~ Crea un log delle operazioni ( files copiati,date,errori)
;~ Si applica a cartelle e sotto cartelle

;CONFIGURAZIONE DEL PROGRAMMA
;*******************************
;Cartella locale che contiene i files per la copia
$cartellaOrigine ="c:\Origine\"
;Cartella locale dove verranno create le cartelle basate sulla data dei files di origine
$Destinazione ="C:\"
;Nome e percorso del file che fa il log delle operazioni su files
$logPath ="c:\Origine\BackupLog.txt"
;Ore trascorse rispetto alla data del file della cartella di origine . minimo e massimo
$minh=24   ; 1 giorno
$maxh =32  ; ore dopo il giorno ( 8 ore)
$taskTime = 1 ; determina ogni quanti minuti il programma controlla la cartella di origine per la copia
;~ *******************************************************************************************************

;INIZIO
$orologio = TimerInit()
;Semplici inzializzazioni delle variabili secondi,minuti,numero di copie
$sec = 0
$min = 0
$nCopy =0


;~ CICLO PRINCIPALE DEL PROGRAMMA
While 1
       
       while 1 ;ciclo che esegue la copia ogni tot tempo
               if TimerDiff($orologio) > 999 Then
                       $sec += 1
                       $orologio = TimerInit()        
               EndIf
               if $sec = 60 Then
                       $min += 1
                       $sec = 0
               EndIf
               if $min =$taskTime Then        
                       $min =0
                       ExitLoop ;Copia temporizzata , eseguita all'uscita di questo loop
               EndIf
       WEnd                
               
       ;Apre il file per il log dei backup
       $log = fileopen ($logPath,1)
       if $log = -1 then
               MsgBox(0, "Errore", "Impossibile aprire il file per il Log")
               Exit
       EndIf

       ;si sposta sulla cartella locale
       $Error = FileChangeDir ( $cartellaOrigine )
       ;In caso di errore durante l'accesso alla cartella locale
       if $Error =0 then
               msgbox(0,"Backup","Impossibile settare il percorso..Continua")
               FileWrite($log,"Impossibile settare il percorso " & @MDAY & "/" & @MON & "/" &  @YEAR & " " & @HOUR & ":" & @MIN & @CRLF  & @CRLF)
               Fileclose($log)
               exit
       EndIf

       ;Inizia la ricerca di uno o più files all'interno della cartella
       $search = FileFindFirstFile("*.*")

       ;se la cartella locale è vuota
       If $search = -1 Then
               MsgBox(0, "Error", "Non ci sono files nella cartella")
               Exit
       EndIf

       ;~         Ciclo di lavoro per la copia dei files
       while (1)        

               $file = FileFindNextFile($search)
       
               ;15 secondi per avvertire che la copia è terminata
               if @error=1 then
                       FileClose($search)
                       traytip(" FINE Backup","n."& $nCopy &" Files copiati del " & $dataLog & " Copiati il " & @MDAY & "/" & @MON & "/" &  @YEAR & " " & @HOUR & ":" & @MIN,15)
                       ;Logga la fine
                       FileWrite($log,"n."& $nCopy &" Files copiati del " & $dataLog & " Copiati il " & @MDAY & "/" & @MON & "/" &  @YEAR & " " & @HOUR & ":" & @MIN & @CRLF  & @CRLF)
                       FileClose($log)
                       $nCopy =0 ;
                       ExitLoop
               EndIf        

       ;Determina la data dei files
               $Datef = filegettime ($file,1,0)
       ;Formatta la stringa come data        
               $formatDate = $Datef[0] & "/" & $Datef[1] & "/" & $Datef[2] & " " & $Datef[3] & ":" & $Datef[4] & ":" & $Datef[5]
       ;Calcola le ore trascorse tra il giorno di creazione del file corrente ed il giorno corrente        
               $ore = _DateDiff('h',$formatDate, @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC)
       ;Se le ore  sono pari ad un giorno o non superano i due giorni, crea una cartella che ha per nome la data del file e avvia la copia
               if $ore >=$minh and $ore <$maxh then
                       ;Memorizza la data del file per il Log
                       $dataLog = $formatDate
                       ;Crea la cartella ( in questo caso nella root )
                       dircreate ($Destinazione & $Datef[0] & "_" & $Datef[1] & "_" & $Datef[2])
                       ;Copia i files
                       filecopy($cartellaOrigine & $file, $Destinazione & $Datef[0] & "_" & $Datef[1] & "_" & $Datef[2] & "\" & $file,1)
                       $nCopy +=1 ;Conta i file copiati
                       ;Logga ogni file copiato
                       filewrite($log,$cartellaOrigine & $file & " -> " & $Destinazione & $Datef[0] & "_" & $Datef[1] & "_" & $Datef[2] & "\" & $file & @CRLF)
                               
               EndIf
       wend ;chiusura Ciclo di lavoro per la copia dei files
WEnd        ; CHIUSURA CICLO PRINCIPALE


Edited by Ikezawa - 28/12/2010, 23:24
 
Top
© Meitantei
CAT_IMG Posted on 17/1/2011, 20:32     +1   -1




Ottimo, complimenti! ^_^
 
Top
xMasteRx
CAT_IMG Posted on 17/1/2011, 22:48     +1   -1




non avevo mai visto questo script o.o
bravo ^^
 
Top
Ikezawa
CAT_IMG Posted on 18/1/2011, 00:21     +1   -1




Grazie ^^ :)
 
Top
3ad
CAT_IMG Posted on 18/1/2011, 07:41     +1   -1




Occhio al necropost ;)
Carino e utile, bravo Ikezawa.
 
Top
4 replies since 28/12/2010, 23:03   234 views
  Share