Petit backup

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…

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/14817

Haut de page