Backup dati con Timestamp e FTP upload

Quante volte ci è capitato di aver perso dei file di vitale importanza proprio nel bel mezzo di un lavoro? Ogni volta ci si ricorda dei backup solo nell'istante in cui, non avendoli fatti, ci servono e siamo con l'acqua alla gola..

La creazione delle copie di sicurezza e dei backup è spesso rappresentata da una serie di operazioni ripetitive e noiose come:

  1. Crea un archivio compresso dei file (perché abbiamo a cuore lo spazio disco, vero?)
  2. Rinomina il file in modo da essere facilmente ordinato per data (il pattern YYYYMMDD-HHMMSS vi dice niente?)
  3. Sposta il file in una posizione "sicura" (da ripetere N volte in base alla nostra percezione di sicurezza)

Bene, questi passi non sono solo ripetitivi e noiosi, ma portano via tempo e spesso vengono del tutto dimenticati. L'utilizzo di sistemi " Pro" ci porta via troppo tempo in configurazioni e impostazioni delle regole di Cron o di Task Scheduler in Windows.

Per i miei backup utilizzo un semplice script Bash che con una semplice invocazione permette di eseguire tutti i passi precedentemente descritti... inoltre il sistema può eseguire in automatico un upload dei file di backup direttamente in un nostro spazio FTP.
Lo script è stato scritto per CygWin e non dovrebbe avere particolari problemi ad essere eseguito in sistemi *nix. I requisiti sono la presenza del programma TAR (sempre presente nelle distribuzioni Linux) e di NcFTP per l'upload tramite protocollo FTP.

Lo script si compone di due diversi files: il primo (backup.sh) per la creazione dei backup e il secondo (login.info) per l'utilizzo delle credenziali di accesso FTP tramite il tool opensource NcFTPput.

#!/bin/bash
# Definizione del nome/posizione del file di backup
# nel nostro caso i backup saranno nella cartella "backup" rinominati in "backup-YYYYMMDD-HHMMSS.tar.bz2"
FILENAME=backup/backup-$(date +%Y%m%d_%H%M%S).tar.bz2

# Quali files aggiungere? Nell'esempio il file "myproject.txt" e la cartella "img/"
tar cjvvf $FILENAME myproject.txt img/

# Upload del file di backup e del file "otherfile.pdf" di cui si vuole tenere solo la versione più recente
# la cartella remota utilizzata è "remoteBackupFolder"
ncftpput -d $FILENAME.log -f login.info remoteBackupFolder $FILENAME otherfile.pdf

il file login.info, come specificato nella documentazione di NcFTPput:

host ftp.myhosting.com
user myusername
pass mypassword

Ovviamente il file login.info non deve essere accessibile agli altri utenti per evitare che le credenziali del vostro spazio FTP vengano compromesse.

Con questi due semplici script, il backup sarà questione solo di un semplice click.. Buon backup!