Good Ideas

Come salvare i backup del proprio server Plesk su S3 Amazon

Posted by:

|

On:

|

,

Avere copie di backup dei propri siti web è vitale e potrebbe salvarvi da spiacevoli inconvenienti. Quello che voglio raccontarvi è come integrare i backup di Plesk con il servizio Amazon S3, uno storage remoto.

Il pannello di controllo Plesk ha già ottime procedure di backup, che consentono di salvare i dati sullo stesso filesystem su cui opera o su cartelle remote via ftp. La mia idea è di montare una cartella sul filesystem di linux direttamente collegata con il servizio Amazon S3. Tutto ciò che verrà scritto su questa cartella, verrà automaticamente trasferito sui server irlandesi di Amazon.

Installazione di FuseOverAmazon

Per prima cosa dovete collegare il vostro server al servizio S3. Per far questo dobbiamo scaricare e compilare FuseOverAmazon (s3fs) un filesystem fuse che permette di associare un bucket di Amazon S3 ad una cartella locale. S3fs salva file nativamente e in modo trasparente su S3. La dimensione massima dei file salvati è di 5G.

Per l’installazione seguite queste indicazioni, dovrete scaricare il sorgente e compilarlo sulla vostra macchina.

Configurazione di FuseOverAmazon

Per comodità ho creato un file di configurazione valido per l’intero sistema e l’ho salvato in /etc (/etc/passwd-s3fs). Il contenuto del file è semplice:

[code]accessKeyId:secretAccessKey[/code]

dove accessKeyId e SecretAccessKey sono due chiavi che potete trovare sul sito ufficiale di S3, nella sezione Developers alla voce Security Credentials. Chiaramente dovete già disporre di un account valido e collegato alla vostra carta di credito.

Lanciate il comando:

[code lang=”bash”]/usr/bin/s3fs mybucket /mnt/s3[/code]

se avete configurato per benino tutto quanto, il sistema dovrebbe montare la cartella locale /mnt/s3 e mapparla sull’account S3. Accertatevi prima di tutto di creare con mkdir la cartella /mnt/s3 (cd /mnt; mkdir s3).

Script di backup

Ora veniamo allo script. Forse non tutti sanno che il backup dei domini Plesk può essere lanciato anche da riga di comando. Sarà su questo comando che si basa l’intero script di backup che andrò a mostrarvi.

Lo script è sostanzialmente lo stesso pubblicato da Frontline Softwork, ma, essendo del 2008, contiene una sintassi non più valida per il Plesk. Ecco quindi che l’ho corretto e farcito per l’integrazione con S3.

Eccovi il codice:

[code lang=”bash”]
#!/bin/sh

# Nice Plesk Backup 2
# rewritten by Dynamick 2010 – www.dynamick.it
# Based on (c) 2008 Frontline softworks, www.frontline.ro
# Visit http://sandbox.frontline.ro for updates

# Plesk Backup Utility Location
PleskBackup=’/usr/local/psa/bin/pleskbackup’

# Backup folder
BackupFolder=’/mnt/s3/’;

#Backup filename
BackupFileName=’plesk-server’;

#Backup extension
BackupExt=’tar’;

# Number of backups to keep
NrOfBackups=7;

# FuseOverAmazon FileSystem mount command (s3fs)
FuseOverAmazon=’/usr/bin/s3fs’

# Amazon s3 bucket name
BucketName=’mydynamickbackup’

# S3fs cache folder
S3Cache=’/root/backup’

# Mount the s3 File System
$FuseOverAmazon $BucketName $BackupFolder -ouse_cache=$S3Cache

# Generate the file names for the backups to keep (last NrOfBackups including today)
for (( i=0; i<$NrOfBackups; i++)); do
FileToKeep[$i]=`date –date=$i’ day ago’ +%Y%m%d`;
done

# Generate the complete path of the backup files to keep
for (( i=0;i<${#FileToKeep[@]};i++)); do
FileToKeep[$i]=$BackupFolder$BackupFileName-${FileToKeep[i]}.$BackupExt;
done

# Start PleskBackup Utility for current day, save to FileToKeep[0]
# We’ll renice the process, to avoid server lockup during backup
# Other usefull parameters
# -v: Verbose (useful for debugging)
# –skip-logs: skips client logs
# nice -15 $PleskBackup –domains-name onlyonedomain.com –output-file=${FileToKeep[0]}
nice -15 $PleskBackup –server –output-file=${FileToKeep[0]}

# Search the backup folder, and delete all the files older than last ‘NrOfBackups’ days
for file in `find $BackupFolder -type f -name $BackupFileName\*$BackupExt`; do
donotdelete=false;

for (( i=0;i<${#FileToKeep[@]};i++)); do
if [ "$file" = "${FileToKeep[i]}" ]; then
donotdelete=true;
fi
done

if [ "$donotdelete" = "false" ]; then
rm $file;
fi
done

# Umount the s3fs (uncomment to make it works)
# fusermount -u $BackupFolder

[/code]

Alcune note:

  1. Prima di eseguire lo script configurate le variabili in testa allo script
  2. Date i permessi di esecuzione
  3. Verificate che le cartelle $BackupFolder e $S3Cache siano già state create
  4. Controllate che la cartella $S3Cache risieda su una partizione con spazio sufficiente per contenere il backup dell’intero Plesk
  5. La prima volta che lo lanciate, fatelo con un solo dominio (esiste una riga commentata per questo).
  6. In produzione, lo script deve essere messo in cron

Lo script andrà a creare l’intero backup e lo scriverà nella cache locale di S3fs e piano piano verrà trasferito sullo storage remoto. Non spaventatevi se su $BackupFolder vedrete per qualche tempo il file del backup a dimensione 0. Si tratta solo di aver pazienza.

Oh.. l’ultima nota: chiaramente S3 è a pagamento. Questi sono i prezzi, irrisori se pensate che i vostri dati sono conservati in buone mani (Designed for 99.999999999% Durability).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *