Histoire d’avoir ceintures et bretelles j’ai codé ce petit script bash qui sauvegarde la ou les bases de données (format MySQL) :
#!/bin/bash
# MariaDB databases backup
# Settings
arch='/mnt/backup/db'
# Functions
function backup_and_clean() {
if [[ -z $1 ]]; then
echo "Parameter missing!"
exit 1
fi
if [[ $1 == '*' ]]; then
archive='full-backup'
db='--all-databases'
else
archive="$1-backup"
db=$1
if [[ ! -d /var/lib/mysql/$db ]]; then
echo "$1 database does not exists!"
exit 1
fi
fi
echo "Backup $1 to $archive..."
# Backup
/usr/bin/mysqldump --defaults-extra-file=/home/me/.mylogin.cnf -u me --single-transaction --quick --lock-tables=false $db | gzip -c > $arch/$archive-$(date +"%F").sql.gz
# Cleanup: remove older archives (keep 5 newests)
if ls $arch/$archive-* 1> /dev/null 2>&1; then
cleanup=$(/usr/bin/ls -t $arch/$archive-* | awk 'NR>5')
if [[ $? != 0 ]]; then
echo "No $archive found"
elif [[ $cleanup ]]; then
/bin/rm $cleanup
else
echo "No $archive cleanup to do"
fi
else
echo "No $archive found"
fi
}
# Backup all databases daily
backup_and_clean '*'
# Backup my_db daily
backup_and_clean 'my_db'
Ça compresse et ne garde que les 5 dernières archives, le tout lancé tous les jours (cron.daily).
Histoire de l’avoir sous le coude si un jour j’en ai besoin…
1 De Nicolas -
C’est très bien tout ça mais on est bien d’accord que ce n’est que la première étape. Ensuite il faut les transférer sur une autre machine et il faut tester la restauration.
2 De Franck -
Évidemment, mais comme j’ai aussi d’autres trucs à transférer sur une autre machine, j’y vais pas à pas.