zoidberg
Folding Member
Boas , ando a construir um bash script para efectuar os backups a um forum. o código actual é:
Código final seguindo as dicas do r3pek tks
o que queria fazer era
*Criar 1 ficheiro com a password do mysql ( /root/.mysqlpasswd ) e exportar as variaveis usr e
pwd a partir de lá para nao as ter visiveis no script
*enviar um e-mail no fim da operação com uma especie de log a dizer que correu tudo bem.
basicamente já envia, mas queria formar um .mailfile com o log das operações ( devo ter de validar se está a correr tudo bem passo a passo e escrever para o mailfile ).
muito obrigado r3pek, já funciona como quero agora é so por no crontab e já está
prox problema : sincronizar a data / hora por detras de uma proxy :| alguem sabe como ?
Código:
#!/bin/sh
# MYSQL Backup Script
export d=$(date +%d-%m-%Y)
export savepath=/share/incoming/Backups
export usr=$(cut -d " " -f 1 /root/.mysqlpasswd)
export pwd=$(cut -d " " -f 2 /root/.mysqlpasswd)
echo starting mySQL Backup Script.
echo start composing mail
echo ---------------backup report log created in $d--------------- > /share/backup/.mailfile
echo creating new directory in shared folder...
mkdir -p $savepath/$d
if [ "$?" = "0" ]; then export p1=OK
else export p1=FAILED
fi
echo Dumping database ***...
mysqldump -u$usr -p$pwd --opt --databases --add-drop-database *** > $savepath/$d/arvore_suporte.sql
if [ "$?" = "0" ]; then export p2=OK
else export p2=FAILED
fi
echo Dumping database ***...
mysqldump -u$usr -p$pwd --opt --databases --add-drop-database *** > $savepath/$d/daily.sql
if [ "$?" = "0" ]; then export p3=OK
else export p3=FAILED
fi
echo Dumping database ***...
mysqldump -u$usr -p$pwd --opt --databases --add-drop-database *** > $savepath/$d/equip_id.sql
if [ "$?" = "0" ]; then export p4=OK
else export p4=FAILED
fi
echo Dumping database ***...
mysqldump -u$usr -p$pwd --opt --databases --add-drop-database *** > $savepath/$d/gedas_forum.sql
if [ "$?" = "0" ]; then export p5=OK
else export p5=FAILED
fi
echo Dumping entire database...
mysqldump -u$usr -p$pwd --opt -A > $savepath/$d/All.sql
if [ "$?" = "0" ]; then export p6=OK
else export p6=FAILED
fi
echo copying files to shared folder...
cp -r /var/www/ $savepath/$d/
if [ "$?" = "0" ]; then export p7=OK
else export p7=FAILED
fi
rm -r $savepath/$d/www/phpmyadmin
if [ "$?" = "0" ]; then export p8=OK
else export p8=FAILED
fi
chmod -R 777 $savepath/$d/
if [ "$?" = "0" ]; then export p9=OK
else export p9=FAILED
fi
echo mounting network share to copy files...
mount -t smbfs -o credentials=/root/.smbpasswd,workgroup=*** //*** /mnt/backupdir/
if [ "$?" = "0" ]; then export p10=OK
else export p10=FAILED
fi
echo copying files to network place...
cp -r $savepath/$d /mnt/backupdir/$d
if [ "$?" = "0" ]; then export p11=OK
else export p11=FAILED
fi
echo unmounting network share...
umount /mnt/backupdir/
if [ "$?" = "0" ]; then export p12=OK
else export p12=FAILED
fi
cat >> /share/backup/.mailfile <<EOF
Creating new directory in shared folder... $p1
Dumping database arvore_suporte... $p2
Dumping database daily... $p3
Dumping database equip_id... $p4
Dumping database gedas_forum... $p5
Dumping entire database... $p6
Copying files to shared folder... $p7
Removing phpmyadmin... $p8
Chmoding 777 shared folder... $p9
Mounting network share to copy files... $p10
Copying files to network place... $p11
Unmounting network share... $p12
EOF
echo e-mailing backup report...
mail -s "Forum Backup Report" -t ***@***.*** < /share/backup/.mailfile
if [ "$?" = "0" ]; then export p13=OK
else export p13=FAILED
fi
echo e-mailing backup report... $p13 >> /share/backup/.mailfile
echo archiving log file...
cp /share/backup/.mailfile /share/backup/$d.log
echo done!
o que queria fazer era
*Criar 1 ficheiro com a password do mysql ( /root/.mysqlpasswd ) e exportar as variaveis usr e
pwd a partir de lá para nao as ter visiveis no script
*enviar um e-mail no fim da operação com uma especie de log a dizer que correu tudo bem.
basicamente já envia, mas queria formar um .mailfile com o log das operações ( devo ter de validar se está a correr tudo bem passo a passo e escrever para o mailfile ).
muito obrigado r3pek, já funciona como quero agora é so por no crontab e já está
prox problema : sincronizar a data / hora por detras de uma proxy :| alguem sabe como ?
Última edição: