Dans le crontab il y avait ça pour lancer des sauvegardes périodiques de la BDD et garder plusieurs versions :
# minute hour day month dayofweek command
6 2 * * * /home/monjolisite/progs/savftpall.sh > /dev/null
16 22 31 12 * /home/monjolisite/progs/savftpall.sh yearly
16 2 30 */3 * /home/monjolisite/progs/savftpall.sh quaterly
26 2 1 * * /home/monjolisite/progs/savftpall.sh monthly
36 2 * * 5 /home/monjolisite/progs/savftpall.sh weekly
Et le savftpall faisant genre des
mysqldump -u monjolisite --host=mysql.monhebergeur.fr --password=pass_en_clair monjolisite --ignore-table=monjolisite.spip_referers --ignore-table=monjolisite.spip_referers_articles --ignore-table=monjolisite.spip_visites --ignore-table=monjolisite.spip_visites_articles > /home/monjolisite/oldstatic/storage/dumpall.sql
zip /home/monjolisite/oldstatic/storage/dumpall.sql.zip /home/monjolisite/oldstatic/storage/dumpall.sql
pour sauvegarder ce qu’il voulait, localement = ici un dump de tout sauf les stats spip + un dump des données spip seulement.
Puis il l’envoyait sur un hébergement ovh pas cher qui lui aussi gardait plusieurs versions :
/usr/bin/ftp -n $HOST >>savftpbdd_out.log 2>>savftpbdd_err.log <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd sav
cd monjolisite
mkdir $dest
mkdir $previous
binary
delete $previous/${FILE3}.bak.bak
rename $previous/${FILE3}.bak $previous/${FILE3}.bak.bak
rename $previous/${FILE3} $previous/${FILE3}.bak
rename $dest/${FILE3} $previous/${FILE3}
put ${FILE3} $dest/${FILE3}
quit
END_SCRIPT
etc
Script complet
Clause de “attention” et de limitation de responsabilité :
- C’était il y a très longtemps, ça tourne plus depuis longtemps aussi
- C’était en ftp donc mal sécurisé et il faudrait désormais adapter en sftp ou ssh
- C’était pour SPIP 1.9 ou 2.4 alors il faudrait mettre à jour les noms des tables.
- Adaptez et utilisez à vos risques
#!/bin/sh
echo "pour réimporter ensuite faire dans un console ou un script ssh"
echo 'mysql -h serveursql -u nom_user -p$PASSWORD nom_bdd < nomdump.sql'
echo '(mot de passe collé à -p, ou sinon en interactif après)'
# echo on
# set -x
echo ==========================================================
echo ==========================================================
echo Dump, compression et transfert des TABLES de la BDD
echo ==========================================================
cd /home/monjolisite/progs
echo 'Dump & Compression'
echo "==========="
#DUMPALL sauf stats
mysqldump -u monjolisite --host=mysql.monhebergeur.fr --password=pass_en_clair monjolisite --ignore-table=monjolisite.spip_referers --ignore-table=monjolisite.spip_referers_articles --ignore-table=monjolisite.spip_visites --ignore-table=monjolisite.spip_visites_articles > /home/monjolisite/oldstatic/storage/dumpall.sql
zip /home/monjolisite/oldstatic/storage/dumpall.sql.zip /home/monjolisite/oldstatic/storage/dumpall.sql
rm /home/monjolisite/oldstatic/storage/dumpall.sql
if [ -e '/home/monjolisite/oldstatic/storage/dumpall.sql' ] ; then echo "/home/monjolisite/oldstatic/storage/dumpall.sql aurait du être effacé mais est toujours là" ; fi
#DUMPSPIPCORE
mysqldump -u monjolisite --host=mysql.monhebergeur.fr --password=pass_en_clair monjolisite spip_articles spip_auteurs spip_auteurs_articles spip_auteurs_messages spip_auteurs_rubriques spip_breves spip_documents spip_documents_liens spip_forum spip_groupes_mots spip_messages spip_meta spip_mots spip_mots_articles spip_mots_breves spip_mots_documents spip_mots_forum spip_mots_rubriques spip_mots_syndic spip_notations spip_petitions spip_rubriques spip_signatures spip_syndic spip_syndic_articles spip_types_documents spip_urls > /home/monjolisite/oldstatic/storage/dumpspipcore.sql
zip /home/monjolisite/oldstatic/storage/dumpspipcore.sql.zip /home/monjolisite/oldstatic/storage/dumpspipcore.sql
rm /home/monjolisite/oldstatic/storage/dumpspipcore.sql
if [ -e '/home/monjolisite/oldstatic/storage/dumpspipcore.sql' ] ; then echo "/home/monjolisite/oldstatic/storage/dumpspipcore.sql aurait du être effacé mais est toujours là" ; fi
cd /home/monjolisite/oldstatic/storage
echo
echo "Obtenu :"
ls -ltr dump*.zip
if ls *.log > /dev/null 2>&1
then
echo
echo Destruction des vieux logs
rm *.log
else
echo "Pas de vieux logs à détruire"
fi
echo
echo Transfert FTP
HOST='ftp.cluster003.ovh.net'
USER='user_destination'
PASSWD='pass_destination'
FILE3='dumpall.sql.zip'
FILE4='dumpspipcore.sql.zip'
# pour faire ftp mkdir $dest il faut que ça soit pas vide sinon ça lit le mot d'après
dest="BDDdernier"
previous="$dest/previous"
if [ ! -z $1 ]; then dest="BDD$1"; previous="$dest/previous"; echo "Oh une sauvegarde personnalisée, dans $dest avec previous=$previous"; fi
echo "On va donc sauvegarder dans $dest avec previous=$previous"
/usr/bin/ftp -n $HOST >>savftpbdd_out.log 2>>savftpbdd_err.log <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd sav
cd monjolisite
mkdir $dest
mkdir $previous
echo "Dans $previous il y a " > ftp_ftpbdd.log
ls $previous >> ftp_ftpbdd.log
binary
delete $previous/${FILE3}.bak.bak
rename $previous/${FILE3}.bak $previous/${FILE3}.bak.bak
rename $previous/${FILE3} $previous/${FILE3}.bak
rename $dest/${FILE3} $previous/${FILE3}
put ${FILE3} $dest/${FILE3}
delete $previous/${FILE4}.bak.bak
rename $previous/${FILE4}.bak $previous/${FILE4}.bak.bak
rename $previous/${FILE4} $previous/${FILE4}.bak
rename $dest/${FILE4} $previous/${FILE4}
put ${FILE4} $dest/${FILE4}
quit
END_SCRIPT
cd /home/monjolisite/progs
echo '= OK DONE : BDD a priori sauvee et transferee'
echo ==========================================================
echo ==========================================================
exit