PDA

Visualizza la versione completa : Crontab e Backup


yusizu
16-01-2007, 12:35
Ciao a tutti, premetto che conosco appena linux ed ho una distr. Mandriva 2006 ed ho i permessi di root


vorrei sfruttare le potenzialità di cron per fare il backup giornaliero della cartella /var/www/html e il dump di mysql (credo /usr/lib/mysql)

La particolarità e che vorrei che venissero creati questi due file (zippati o meno) avendo per nome la data del backup stesso (sia per una questione di praticità sia per evitare di sovrascriverli)

Come faccio a realizzarlo?
Come faccio a copiarli su un hd esterno?
Magari è possibile anche copiarli su di un server ftp in mio possesso o via mail(insomma lontano dal server stesso,


grazie mille per le eventuali risposte.

P.S vi pregherei di essere molto comprensivi, finora ciò che sono riuscito a fare e
solo inserire da webmin il seguente comando:


wget -q -O /dev/null/ -nd http://localhost/prova.php

per fare il controllo ogni minuit e stampare dei documenti
:ciauz:

iox84
16-01-2007, 14:06
Questo è un vecchio script che fa il backup su un disco esterno (non guardare la sicurezza e gli errori implementativi) va migliorato e modificato ma puoi prenderlo come spunto


#!/bin/bash
#Script per il backup su disco esterno del database e della root del web-server
#Comandi base
#mysqldump -l --all-databases -h 127.0.0.1 -u root --password=administrator > /media/sda1/backup/database.sql
#cp -R /home/armando/public_html /media/sda1/backup
#Test strutture di controllo

logfile="/var/log/backup.log"
backupdir="/media/sda1/backup"
prevlog=$(less $logfile)

if [ -w $backupdir ] ; then
echo "Sto scrivendo il backup sul disco esterno"
#dump db mysql
mysqldump -l --all-databases -h 127.0.0.1 -u root --password=password > /media/sda1/backup/database.sql
#copia della root (sovrascrive la precedente)
cp -R /home/armando/public_html /media/sda1/backup 2> /var/log/backup.log
#Scrittura log
echo -e "$prevlog\n[$(date +%Y)-$(date +%m)-$(date +%d) $(date +%k):$(date +%M)] - Backup eseguito correttamente" > $logfile
else
#Scrittura log
echo -e "$prevlog\n[$(date +%Y)-$(date +%m)-$(date +%d) $(date +%k):$(date +%M)] - Il disco non è montato, o la cartella non esiste." > $logfile
echo "Disco non montato"
exit 1
fi
exit 0



Per imparare a programmare Bash fatti un giro all'indirizzo http://www.pluto.it/files/ildp/HOWTO/Bash-Prog-Intro-HOWTO/Bash-Prog-Intro-HOWTO.html

yusizu
16-01-2007, 20:21
ti ringrazio per il postm mi metto subito a lavoro...
ma esattamente dove devo salvare questo file bash e con quale estensione?

P.S poi nel crontab devo solo indicare il file che ho (hai) appena creato e, l'intervallo di tempo?

grazie ancora

oTTony
16-01-2007, 20:46
lo salvi come nomefile.sh , importante che tu gli dia i permessi di escuzione per l'utente che lancia il backup , poi li puoi mettere un pò dove ti pare , io per esempio li tengo sul disco dove vengono effettuati i salvataggi .Poi con cron tab fai come hai detto .
Vedrai se impari due o tre comandi con bash fai degli sciptini utili per il backup .
Ora non li ho sotto mano , ma domani tè li passo .

iox84
17-01-2007, 00:36
Io su ubuntu l'ho messo tra gli script di shutdown della macchina, quindi ogni volta che spengo il computer mi fa il backup sul disco esterno.
oTTony ha già spiegato alla perfezione in fatto di permessi e posizionamenti e non ho niente da aggiugere.
:ciauz:

yusizu
17-01-2007, 10:30
@oTToni, apsetto con ansia i tuoi script.

Diciamo che quello che mi avete getilmente passato funziona alla meraviglia, addirittura (senza conoscere nulla di bash) sono riuscito a fare il backup del db su un pc windows in lan e rinominarlo con la data corrente.
l'unico (ma fondamentale) pasaggio che mi sfugge e come inserirlo nel crontab per decidere la frequenza con cui deve essere fatto l'aggiornamento,
ho provato sempre da webmin (ancora ho poco dimestichezza con la shell) a dare i permessi di root ed assegnare come comando:


wget -q -O /dev/null/ -nd /root/Documents/backup.sh //(il file che mi avete postato)
//idem
/root/Documents/backup.sh


ma se lo lancio sempre da webmin mi dice che non produce alcun output alcontrario se lo inserisco nella shell funziona alla grande, ma ovviamente non è automatizzato.

In attesa che OTTOni posti gentilmente i suoi script, volevo sapere se qualcunaltro è riuscito a fare il dump di un db hostato su aruba (o cmq in remoto) e via ftp della cartella sempre su hosting esterno.

Grazie mille, siete stati fin troppo gentili. :unz:

oTTony
17-01-2007, 12:47
No io non ho mai provato a fare il backup di un db da remoto , anche perchè io i miei db li ho sul mio server , ma non penso sia nulla di imposssibile .

Questo è uno script per fare il dump di mysql in locale :


# BackUp Mysql Database
#!/bin/bash
FILE=/mnt/back/nomefile.sql
NAME=root
PASS=xxxxx
DB=dbname
echo "Content-type: text/plain"
echo "Tried to export file: "$FILE
mysqldump --quote-names -u $NAME --password=$PASS $DB > $FILE #

tar zxvf backupfile.tgz (se compresso) # sql nomedatabase < backupfile
Funziona testato e ritestato più volte.

Questo è uno script per salvare la home:


#!/bin/bash
# backup #
# Semplice Script di BackUp per Directory
# Parametri da impostare
# Backup_Dirs="/dir/source/"
# Backup_Dest_Dir=/dir/back/
# Backup_Date=`date +%b%d%Y` / formato data
#------------------------------------------------------------
Backup_Dirs="/home/server /home/sergio"
Backup_Dest_Dir=/mnt/back/
Backup_Date=`date +%d%m%Y-%I%M`
# Create tar file with todays Month Day Year prepended for easy identification
tar cvzf $Backup_Dest_Dir/server-$Backup_Date.tar.gz $Backup_Dirs > /dev/null
echo "END BACKUP $Backup_Date"
exit 0

yusizu
17-01-2007, 13:01
grazie ancora ma con quello che mi avevate postato riuscivi già tranquillamente a fare il backup del db e della cartella pubblica che risiede sul mio server.

Ora, magari per voi è scontato , per me no, creato questo file bash, lo inserisco ad esempio in /root/Document/backup.sh

ma in cron come commando che diamine devo mettere??
...fin'ora ho lanciato il file bash sirettamente incollandolo nella shell.


P.S e poi nn ti scoccio più se vredi sia una cosa fattibile epoco impegnativa, mi posteresti un file bash che si colleghi via ftp ad un server (in remoto) e mi faccia il backup, così per il suo relativo db (es. indirizzo 62.150.34.711)


grazie ancora

yusizu
18-01-2007, 12:57
up please :(

iox84
18-01-2007, 13:18
cron non l'ho mai usato, dal manuale dice che basta configurare crontab e riuscirai a far partire lo script.
Prova a dare un'occhiata ai manuali digitando da shell:



man cron

e


man crontab


Purtroppo non ho la più pallida idea di come funzioni cron.

Loading