mardi 8 novembre 2011

Comment effacer tous les répertoires vides dans une structure Linux

Comment effacer tous les répertoires vides dans une structure Linux

find . -type d -empty -print -delete





Comment effacer tous les liens dans une structure de répertoire sous Linux


Comment effacer tous les liens dans une structure de répertoire sous Linux



find .  -type l -print -exec rm {} \;


Comment Afficher tous les liens dans une structure de répertoire sous Linux

find .  -type l -print

dimanche 6 novembre 2011

Comment faire une Sauvegarde de plusieurs Base de données MySQL

Comment faire une Sauvegarde de plusieurs Base de données MySQL

 ou

Comment faire un Dump de toutes les bases d'un serveur MySQL dans des fichiers multiples

 

Si vous avez sous la main un serveur abritant plusieurs (dizaines, voir centaines de) bases de données, le jour où une des bases de données plante et qu'on vous demande de la restaurer, je vous souhaite bien du courage si vous n'avez qu'un résultat de mysqldump --all-databases sous la main.

Afin de pallier ce problème, j'ai écris ce script bash qui vous facilitera bien la vie !
Au programme :
  • sauvegarde des dump de chaque base dans des fichiers séparés compressés en gzip, eux même situés dans un dossier nommé en fonction de la date
  • suppression automatique du dump effectué il y a 7 jours.
Le script est destiné à être exécuté par un cron, par exemple toutes les nuits.

 CODE :

#!/bin/bash

#paramètres de configuration du script
#completer ici par le nom d'un utilisateur autorisé à dumper toutes vos bases :
strMysqlUser=""
#completer ici par le mot de passe de cet utilisateur :
strPassword=""
# completer ici par le chemin vers le repertoire de travail où va se trouver le dump
# il est possible de préfixer le répertoire  :
# "/rep/de/travail/prefix_" donnera alors /rep/de/travail/prefix_20070505
repTravail=""


#mémorisation de la date du jour et de la date d'il y a 7 jours
dateActuelle=$(date +%Y%m%d)
datePassee=$(date --date '7 days ago' +%Y%m%d)

#Suppression de la sauvegarde d'il y a 7 jours
echo "["$(date +%F\ %X)"] Suppression des dump du "$datePassee
repTravailPasse=$repTravail$datePassee
rm -R $repTravailPasse

# début du dump
echo "["$(date +%F\ %X)"] Dump du : "$dateActuelle
repTravailActuel=$repTravail$dateActuelle
mkdir $repTravailActuel
# récupération de la liste des bdd, "tail -n +2" est présent pour ne pas récupérer le titre "Databases" renvoyé par mysql
listDatabase=$(mysql --user=$strMysqlUser --password=$strPassword --exec="SHOW DATABASES;" |  tail -n +2)

#dump de chaque base dans un fichier
for lineDatabase in $listDatabase
do
    echo "["$(date +%F\ %X)"] Debut du dump de la base "$lineDatabase" vers "$repTravailActuel
    mysqldump --user="$strMysqlUser" --password="$strPassword" "$lineDatabase" | gzip > "$repTravailActuel"/"$lineDatabase".sql.gz
    echo "["$(date +%F\ %X)"] Dump compressé dans "$repTravailActuel"/"$lineDatabase".sql.gz"
done
echo "["$(date +%F\ %X)"] Fin de la sauvegarde"
exit 0




Source : http://snippets.prendreuncafe.com/snippet/67