Backup UbuntuServer.sh
La revisió el 20:52, 1 març 2009 per Joan (discussió | contribucions)
#!/bin/bash
# backup_DELL_UbuntuServer.sh: Servidor Ubuntu Backup Script, Joan Quintana
# els scripts de backup es guarden a /home/joan/copia_seguretat/scripts
# els logs de backup es guarden a /home/joan/copia_seguretat/log
#aquest scrit és una còpia local, perquè el disc de xarxa està muntat localment en el servidor a home/joan/disc_xarxa
NOM_BACKUP="UbuntuServer"
tdate=`date +%d%m%y`
backupdirs="/home/joan/cbn /home/joan/googling /home/joan/socrathos /home/joan/wiki /home/joan/blog/wp-content /home/joan/copia_seguretat/mysql_backup"
# comprovar que la IP 192.168.1.15 apunta a IOMEGAXARXA
findsmb >> /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
ping -c 2 192.168.1.15 >> /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
#on es guarden tots els log
if ! [ -d /home/joan/copia_seguretat/log ]
then
mkdir /home/joan/copia_seguretat/log
fi
echo "Còpia de seguretat de $NOM_BACKUP, $tdate" >> /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
echo "=========================================" >> /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
echo "" >> /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
# còpies de seguretat ##############
for path in $backupdirs
do
if [ ${path: -4} = "wiki" ]; then
rsync -ae --delete $path /home/joan/disc_xarxa/"$NOM_BACKUP" --exclude='[l][a][n][g][u][a][g][e][s]' --exclude='[t][e][s][t][s]' --exclude='[m][a][i][n][t][e][n][a][n][c][e]' --log-file=/home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
else
rsync -ae --delete $path /home/joan/disc_xarxa/"$NOM_BACKUP" --log-file=/home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
fi
done
echo "" >> /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
echo "Informe del ús del disc de xarxa IOMEGA" >> /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
echo "=======================================" >> /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
echo "" >> /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
#percentatge d'ús
du --max-depth=1 /home/joan/disc_xarxa >> /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
#enviem un mail
cat /home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log | mail -s "log backup $NOM_BACKUP" joan_quintana@yahoo.com
exit 0
Proves i errors
el problema de fer
rsync -ae --delete /home/joan/wiki /home/joan/disc_xarxa/UbuntuServer --log-file=/home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
és que em copia tot el directori images, quan jo el que vull és copiar les imatges i els fitxers de configuració que he modificat. Si faig:
rsync -ae --delete /home/joan/images /home/joan/disc_xarxa/UbuntuServer --log-file=/home/joan/copia_seguretat/log/"$NOM_BACKUP"_$tdate.log
se'm crea en el disc de xarxa la carpeta disc_xarxa/UbuntuServer/images, que no la relaciono amb el wiki.
Per solucionar-ho hi ha diferents possibilitats, però m'h he barallat molt.
- Una possibilitat és utilitzar la possibilitat de rsync d'excloure carpetes o fitxers. Per ex, --exclude="bin" exclou la carpeta bin de la còpia. Si vull excloure diferents carpetes ho he de fer tantes vegades com carpetes tinc: --exclude="bin" --exclude="skins"
- puc utilitzar la possibilitat de ficar tots els directoris a excloure en un fitxer: --exclude-from
- una altra solució, però m'hi ha barallat molt sense aconseguir-ho, és utilitzar les expressions regulars.
- --exclude="*.php"
- --exclude='???' -> exclou bin
- --exclude='[i]*' -> exclou tots els que comencen per i
- --exclude='[i][m]*' -> exclou tots els que comencen per im
- Ara bé, una expressió regular que sigui excloure totes les carpetes menys images, no ho he aconseguit. Si ho aconseguís, seria la solució més elegant.
- una altra possibilitat és ficar dins del directori /wiki un fitxer ocult .exclude amb una llista de directoris a excloure (vaig trobar un script...), però el problema d'això és el manteniment quan hagi de reinstal.lar un equip.
Servidor SSH sempre tancat
Això està més ben explicat a backup_LINKAT
La idea és executar un script php per obrir el servidor SSH, i al cap d'una hora executar un altre script per tancar el servidor SSH.
En el meu script afegeixo la línia:
#engeguem el servidor SSH en el servidor wget http://localhost/admin/prova_script.php
i al cap d'una hora s'executa el script tancar_SSH.sh que inclou la línia
wget http://webjoan.dyndns.org/admin/prova_script2.php
creat per Joan Quintana Compte, novembre 2008