Backyp

Backyp è uno script in Python per eseguire la copia di una o più directory.

  • Esegue la copia solo dei file modificati (backup differenziale)
  • Elimina i file obsoleti dalla destinazione
  • Ignora alcuni file/percorsi grazie ai filtri basati su espressioni regolari (RegEx)
  • Supporta i percorsi UNC delle reti Windows
  • Esegue il dump dei database MySQL (richiede mysqldump)
  • Comprime opzionalmente i dump di MySQL (richiede libreria zlib)
  • Esegue i log su schermo, file e posta elettronica
  • Si configura con un semplice file INI

La corrente versione stabile è 1.1.3, rilasciato sotto licenza GNU GPL.

DownloadRequisitiUtilizzoConfigurazioneChangelog

Requisiti

Lo script è stato provato con Python 2.5.1 su sistemi operativi Windows, compreso Vista. Non si esclude che sia funzionante anche su versioni precedenti di Python o altri sistemi operativi.

Utilizzo

backyp.py configfile

Lo script necessita di un solo parametro configfile, che indica il percorso del file INI di configurazione. Il parametro è obbligatorio. In Windows, nel caso in cui la directory di Python non sia presente nella variabile d’ambiente %PATH%, è necessario specificare il percorso dell’eseguibile.

C:\python25\python.exe backyp.py configfile

Configurazione

Per personalizzare lo script si utilizza un file configurazione INI. Il file deve rispettare lo standard RFC 822.

[sources]
path1: C:\sourcedir > renamedir
path2: \\server\sourcedir
mysql: localhost root password > mysql.zip

La sezione sources indica le origini di cui effettuare il salvataggio. Siccome non possono esistere più origini con lo stesso nome, l’origine deve iniziare con l’ID risorsa (obbligatorio) ed è normalmente seguita da un progressivo. Se la risorsa viene usata una sola volta, si può omettere il progressivo. Le risorse attualmente supportate solo le seguenti:

  • path = Percorso di una cartella (directory) da copiare nella destinazione. In Windows sono supportati i percorsi di rete UNC. Facoltativamente è possibile specificare un nuovo nome da usare nel salvataggio (output redirection). Se due cartelle risulteranno avere lo stesso nome, lo script aggiunge automaticamente un progressivo al nome della cartella. Se esiste già una cartella nella destinazione, lo script ne aggiorna il contenuto copiando solo i file modificati dall’ultima esecuzione (backup differenziale).
  • mysql = Host database di MySQL (richiede mysqldump). L’unico parametro obbligatorio è il nome host o l’indirizzo IP del server di MySQL. È possibile specificare nome utente e password per l’autenticazione separati da spazi – in mancanza viene usato l’utente root con password vuota. Facoltativamente è possibile indicare il nome del file (output redirection) al posto del predefinito mysql.sql. Se sono presenti più backup verso lo stesso file, lo script aggiunge automaticamente un progressivo al nome del file. Se ha estensione zip, viene automaticamente compresso (richiede la libreria zlib).

Le origini che iniziano per un ID risorsa non supportato viene ignorato.
[destinations]
path1: C:\dest

La sezione destinations indica le destinazioni dove effettuare il salvataggio. Siccome non possono esistere più destinazioni con lo stesso nome, la destinazione deve iniziare con un ID risorsa (obbligatorio) ed è normalmente seguita da un progressivo. Se la risorsa viene usata una sola volta, si può omettere il progressivo. Le risorse attualmente supportate solo le seguenti:

  • path = Percorso di una cartella (directory) dove copiare le orgini. Se non esiste, viene tentata la creazione. In Windows, sono supportati i percorsi di rete UNC.

[exceptions]
regex1: ^C:\\sourcedir\\exclude\\

La sezione exceptions indica i filtri basati su espressioni regolari. Quando l’espressione combacia, il file o la directory non viene copiata (la destinazione non viene intaccata). Notare che nell’esempio la barra rovescia è specificata doppia in quanto, come in tutte le espressioni regolari, è un carattere di escape. La sezione viene ignorata durante i dump dei database MySQL.

[logging]
screen: 2
file: 2
mail: 0

La sezione logging permette di configurare l’accuratezza dei log e su quale output mostrarli

  • screen = Mostra l’output su video
  • file = Salva un file di log
  • mail = Invia una mail
  • 0 = Nessun log
  • 1 = Log di base, principalmente errori ed anomalie
  • 2 = Log completo

[config]
logpath: backyp.log
mailfrom: backyp@localhost
mailto: backyp@localhost
mailattachment: logfile.txt
smtpserver: localhost

La sezione config permette di specificare alcuni parametri generali per lo script. Questi parametri non sono obbligatori.

  • mysqldump = Percorso del tool mysqldump, fornito assieme a MySQL. Se non viene specificato, lo script tenta di trovarlo nei percorsi più comuni.
  • logpath = Percorso dove salvare i log su file. Il percorso può indicare sia un file, al quale viene accodato il log, che una directory nella quale viene creato un file nella forma aaaa-mm-gg.log. Se vengono eseguiti più script nello stesso giorno, vengono accodati. Default: backyp.log
  • mailfrom = Indirizzo da usare come mittente delle e-mail. Default: backyp@localhost
  • mailto = Indirizzo di destinazione delle e-mail. Default: backyp@localhost
  • mailattachment = Nome del file in allegato alle e-mail. Se ha estensione zip, viene compresso (richiede libreria zlib). Default: logfile.txt
  • smtpserver = Server SMTP da usare per il recapito delle e-mail. Default: localhost

Changelog

  • Versione 1.0.1. Prima release
  • Versione 1.1.1. Aggiunto mysqldump e allegati compressi, corretto diversi bug sulla lettura file INI, aggiunta controlli e gestione eccezioni generate in caso di accesso negato.
  • Versione 1.1.2. Aggiunto 1 secondo di scarto durante il controllo aggiornamento della destinazione per compatibilità con alcuni filesystem
  • Versione 1.1.3. Risolto bug nelle variabili LogFile e LogMail che in alcune situazioni risultano non dichiarate