Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- <<COMMENT1
- Script pour sauvegarder les bdd de l'utilisateur courant
- Les sauvegardes sont archivées et compressées
- Elles sont ensuite envoyées en PJ chiffrée par email
- Les fichier dump plus lourd qu'un certain seuil ne sont pas ajoutés à l'archive, une copie locale est conservée
- COMMENT1
- seuil=10000000 #limite de taille (en octets) pour inclure ou non le dump d'une base dans l'archive
- #Récupération des bases de données de l'utilisateur USER dans le fichier databases (note: connexion à la base $user avec authentification par peer)
- user=$USER
- cd /media/coloc/bddbk/$user
- psql $user --tuples-only --pset=format=unaligned --pset=footer=off -c "SELECT datname FROM pg_database JOIN pg_roles ON pg_database.datdba=pg_roles.oid WHERE rolname='$user' AND datname NOT IN ('$user') ;" > databases
- #Import dans le tableau bases
- declare -a bases=(`cat "databases"`)
- sujet="backupBDD"
- dest="[email protected]"
- archive="backup-$(date +%d-%m-%y).tar"
- pj="backup-$(date +%d-%m-%y).tar.gpg"
- #Suppression de l'ancien email et de l'ancienne archive (si plusieurs archives créées le même jour)
- rm -f mail.txt $archive
- #Ecriture du corps du mail et création de l'archive
- echo "$HOSTNAME" > mail.txt
- echo "Bases sauvegardées pour $user :" >> mail.txt
- cat "databases" >> mail.txt
- echo "Note: archives à restaurer avec pg_restore" >> mail.txt
- tar -cf $archive mail.txt
- for i in "${bases[@]}"
- do
- echo -e "Dump de la base $i ..."
- pg_dump --file="$i.bk" --format=c $i
- sleep 2
- if [ `stat -c %s $i.bk` -gt $seuil ]
- then
- echo -e "Fichier trop lourd, ne sera pas ajouté à l'archive. Chiffrement..."
- gpg --yes --output $i.bk.gpg -e --recipient $dest $i.bk && rm $i.bk
- else
- echo -e "Ajout du dump à l'archive..."
- tar -rvf $archive $i.bk
- sleep 2
- rm $i.bk #suppression du dump en clair
- fi
- done
- echo -e "Bases archivées:"
- echo -e tar -tvf $archive
- echo -e "Chiffrement de l'archive..."
- gpg --yes --output $pj --encrypt --recipient $dest $archive && rm $archive #suppression de l'archive en clair
- echo -e "Envoi de l'email..."
- (cat mail.txt; uuencode $pj $pj) | mail -v -s $sujet $dest
Advertisement
Add Comment
Please, Sign In to add comment