Backup UbuntuServer.sh
Salta a la navegació
Salta a la cerca
#!/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