Projet

Général

Profil

Copie de sécurité » Historique » Révision 8

Révision 7 (Patrice Nadeau, 2015-05-07 12:35) → Révision 8/19 (Patrice Nadeau, 2015-05-07 12:35)

h1. Copie de sécurité 

 {{toc}} 

 h2. Méthode manuelle 

 Remplacer les items suivants : 
 * *username* : Usager de la base de donnés. 
 * *password* : Mot de passe de la base de donnés. 
 * *database* : Nom de la base de données. 
 * *path* : Emplacement pour recevoir le fichier. 

 <pre><code class="bash"> 
 /usr/bin/mysqldump -u username -p password database | gzip > /path/redmine_`date +%y_%m_%d`.gz 
 rsync -a /srv/redmine/files /path/ 
 </code></pre> 

 h2. Script un peu plus évolué 

 <pre> <code class="bash"> 
 #!/bin/bash 
 # 
 # backup_redmine.sh 
 # Backup of a Redmine setup 
 # Last Changes: 2013-02-23 
 # Maintainer: Patrice Nadeau    <pnadeau@patricenadeau.com> 

 # TODO Verify the results (folder exist, enough disk pace , etc..) 

 ## The only variable needed to be changed 
 # Directory of the Redmine install 
 declare -r RAIL_ROOT='/srv/redmine' 
 # MySQL database 
 declare -r MYSQL_DB='' 
 # MySQL username for the Redemine db 
 declare -r MYSQL_USER='' 
 # MySQL password for the Redemine db 
 declare -r MYSQL_PASSWORD='' 
 # Directory for the backup (must exist and with no space in the name) 
 declare -r DIR='/root' 
 ## end 

 # Exit level 
 declare -ir EXIT_OK=0 
 declare -ir EXIT_WARNING=1 
 declare -ir EXIT_ERROR=2 

 declare -i STATUS=$EXIT_OK 

 # The directory inside the archive  
 declare -r REDMINE='redmine' 
 TMP_DIR=$DIR/$REDMINE 

 # This will be used for the archive file  
 declare -r DST=$DIR/redmine_$(date +%Y%m%d_%H%M%S).tar.gz 

 # The temporary sql file 
 declare -r TMP_MYSQL=$TMP_DIR/$MYSQL_DB.mysql 

 echo "Backup in progress in $DST" 

 #### Create the temp directory #### 
 mkdir $TMP_DIR 

 #### backup MySQL #### 
 if [ $STATUS -eq $EXIT_OK ]  
 then 
	 STEP='Creating MySQL backup' 
	 mysqldump --user=$MYSQL_USER --password=$MYSQL_PASSWORD $MYSQL_DB \ 
		 > $TMP_MYSQL 
	 STATUS=$? 
 fi 

 #### backup the Redmine folder #### 
 if [ $STATUS -eq $EXIT_OK ]  
 then 
	 STEP='Creating Redmine'"'"' files backup' 
	 cp --recursive $RAIL_ROOT $TMP_DIR 
	 STATUS=$? 
 fi 

 #### create the archive file #### 
 if [ $STATUS -eq $EXIT_OK ]  
 then 
	 STEP="Creating archive" 
	 tar --create --gzip --file $DST --directory=$DIR $REDMINE 
	 STATUS=$? 
 fi 

 #### cleanup #### 
 if [ $STATUS -eq $EXIT_OK ]  
 then 
	 STEP='Cleaning up' 
	 rm --recursive --force $TMP_DIR 
	 STATUS=$? 
 fi 

 #### exit #### 
 if [ $STATUS -eq $EXIT_OK ]  
 then 
	 echo "Backup done" 
 else 
	 echo "Bakup failed with error code $STATUS in step $STEP" 
 fi 


 exit $STATUS 

 </code></pre> 

 h2. Mon script 

 h3. Utilisation 

 > Disponible à "dans la section fichiers":/attachments/download/137 

 h3. Utilisation 

 Simplement changer les 4 variables situées au début du script 
 * 3 pour MySQL 
 * 1 pour la destination de la copie 

 Rendre le script exécutable 
 * *chmod +x backup_redmine.sh* 

 Et exécuter 
 * *./backup_redmine.sh*