Questo è uno script bash che effettua il backup completo del vostro sito web (o delle directory che specificate), lo comprime e lo invia via FTP su un server differente dal vostro.

Per poter usare uno script bash dovete avere almeno accesso SSH alla macchina dove risiede il vostro sito web.
Nell’esempio che vi scrivo si suppone che lo script sia localizzato nella dir /home/NOME-DIRECTORY/scripts/ ma ovviamente potete spostarlo dove volete. Ricordate solo di aggiornare tutti i path presenti nello scritp.

In poche parole questa piccola applicazione comprime tutte le directory e lo sottodirectory da una directory di partenza assegnata da voi (/home/web/ ad esempio), comprime in locale il tutto e assegna al file compresso un nome tipo server-gg-mm-aa.tar.gz.
Finita la creazione del file compresso apre una connessione FTP con un server remoto e uploda il file di backup in una directory da voi assegnata. Cancella l’eventuale backup più vecchio di due mesi (potete decidere voi l’arco di tempo) sul server remoto. Alla fine cancella il backup sul server di origine.

[ad#ad-1]
Lo script dovrà essere reso eseguibile ( chmod +x <nome_del_file.sh> ) e inserito in crontab per automatizzare il tutto.

Ricordo a tutti che lo script viene fornito cosi com’è senza nessuna garanzia. Non mi assumo nessuna responsabilità per eventuali danni arrecati.
Un minimo di conoscenza degli script bash è richiesta

Ecco lo script. In questo esempio lo script è situato nella dir /home/NOME-DIRECTORY/scripts/ e si chiama backupsite.sh

#!/bin/bash
#------------------------------------------------------------

# qui setto la directory da cui parte il backup (verranno incluse tutte le sottodirectory)
Backup_Dirs="/home/NOME-DIRECTORY"

# assegno la data nel formato giorno-mese-anno
Backup_Date=`date +%d-%m-%Y`

# specifico il nome del file di backup - inserire la vostra NOME-DIRECTORY
Backup_File_Name=/home/NOME-DIRECTORY/scripts/server-${Backup_Date}.tar.gz

# assegno alla variabiale Precedente la data del backup diminuita di due mesi (per eliminare il backup di due mesi prima)
Precedente=$(/bin/date --date '2 month ago' +%d-%m-%Y)

# Creo il file tar con il nome giorno-mese-anno
# Nel file excluded-files elenco tutte le eventuali directory che NON voglio inserire nel backup
pushd .
cd $Backup_Dirs
tar -X /home/NOME-DIRECTORY/scripts/excluded-files -cvzf ${Backup_File_Name} web

# Creato il file tar mi preparo all'upload su altro server del backup
popd

# Settaggi per l'ftp
cat < < EOT > data-ftp.cmd
set confirm-close no
set progress-meter 0
set passive off
set connect-timeout 20
set control-timeout 20
set auto-resume yes
set xfer-timeout 30

# Qui devo sostituire LOGIN PASSWORD e HOST con i dati di accesso all'ftp del server remoto
open -u LOGIN -p PASSWORD HOST
binary

# Specifico in quale DIR del server remoto deve mettere il file di backup
cd backup

# Uplodo il file
put ${Backup_File_Name}

# Cancello il backup precedente con le regole assegnate prima alla variabile Precedente
delete server-${Precedente}.tar.gz
quit
EOT

# Lancio l'ftp verso il server remoto con i comandi appena scritti in data-ftp.cmd
ncftp < data-ftp.cmd

# Cancello il file di backup sul server di origine
rm ${Backup_File_Name}

Se tutto funziona a dovere e siete sicuri di quello che state facendo è ora si mettere in crontab lo script.

Scrivete crontab – e
e inserite questa riga

0 2 1 * * cd $HOME/scripts;$HOME/scripts/backupsite.sh > $HOME/scripts/backupsite.sh.log 2>&1

Controllate il crontab con il comando crontab – l

In questo esempio di crontab il backup partirà ogni primo giorno del mese alle 2.00 di notte

1 commento

  1. Mitico la tua funzione di recupero del mese precedente mi ha risolto un gran problema!!!!!!
    Grazie