Ce petit script permet de générer des archives horodatées de répertoires sur une machine unix. Il suffit que tar et gunzip soient installés et de configurer les 4 variables, puis d'ajouter une entrée pour ce script dans crontab.
Dans cet exemple, le but est de sauvegarder le répertoire /home/g33kzone/public_html/ (le site) et /var/lib/mysql/g33kzone/ (la base MySQL du site) dans le répertoire /home/backups/. Les fichiers de sauvegarde seront nommés archive_YYYYMMDD.tgz, c'est à dire archive_20100321.tgz pour l'archive du 21 mars 2010.
L'option "VERBOSE" permet d'avoir un affichage des fichiers archivés, elle est à utiliser pour le debug ou si vous voulez enregistrer l'activité d'archivage dans un fichier de log.
#!/bin/bash ############################################### # Configuration ############################################### # Destination BACKUP_DIR="/home/backups/" # Directories to save FILESYSTEMS="/home/g33kzone/public_html /var/lib/mysql/g33kzone/" # basename of the archive file BASE_NAME="archive_" # Would you like to get detailed information from tar and gzip? 0=false, # 1=true VERBOSE=0 # DO NOT EDIT BELOW THIS LINE #-------------------------------------------------------- ############################################### # Application Variables - DO NOT EDIT # ############################################### # Day of the week; NOW=`date +"%Y%m%d"` # Script name SCRIPTNAME="Backup Script" # Version VERSION=0.01 ######## Do some error checking ######### # Does backup dir exist? if [ ! -d $BACKUP_DIR ] then echo "The specified backup directory $BACKUP_DIR does not exist. Operation canceled." exit 1 fi ######## Run Backup ######### LEVEL=0 if [ $VERBOSE -eq 1 ] then tar cvfz $BACKUP_DIR/$BASE_NAME.$NOW."tgz" $FILESYSTEMS else tar cfz $BACKUP_DIR/$BASE_NAME.$NOW."tgz" $FILESYSTEMS fi exit 0