Guest User

Untitled

a guest
Aug 26th, 2016
445
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.26 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. <<COMMENT1
  4. Script pour sauvegarder les bdd de l'utilisateur courant
  5. Les sauvegardes sont archivées et compressées
  6. Elles sont ensuite envoyées en PJ chiffrée par email
  7. Les fichier dump plus lourd qu'un certain seuil ne sont pas ajoutés à l'archive, une copie locale est conservée
  8. COMMENT1
  9.  
  10. seuil=10000000 #limite de taille (en octets) pour inclure ou non le dump d'une base dans l'archive
  11.  
  12. #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)
  13. user=$USER
  14. cd /media/coloc/bddbk/$user
  15. 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
  16.  
  17. #Import dans le tableau bases
  18. declare -a bases=(`cat "databases"`)
  19.  
  20. sujet="backupBDD"
  21. archive="backup-$(date +%d-%m-%y).tar"
  22. pj="backup-$(date +%d-%m-%y).tar.gpg"
  23.  
  24.  
  25. #Suppression de l'ancien email et de l'ancienne archive (si plusieurs archives créées le même jour)
  26. rm -f mail.txt $archive
  27.  
  28. #Ecriture du corps du mail et création de l'archive
  29. echo "$HOSTNAME" > mail.txt
  30. echo "Bases sauvegardées pour $user :" >> mail.txt
  31. cat "databases" >> mail.txt
  32. echo "Note: archives à restaurer avec pg_restore" >> mail.txt
  33. tar -cf $archive mail.txt
  34.  
  35. for i in "${bases[@]}"
  36. do
  37.         echo -e "Dump de la base $i ..."
  38.         pg_dump --file="$i.bk" --format=c $i
  39.         sleep 2
  40.         if [ `stat -c %s $i.bk` -gt $seuil ]
  41.         then
  42.                 echo -e "Fichier trop lourd, ne sera pas ajouté à l'archive. Chiffrement..."
  43.                 gpg --yes --output $i.bk.gpg -e --recipient $dest $i.bk && rm $i.bk
  44.         else
  45.                 echo -e "Ajout du dump à l'archive..."
  46.                 tar -rvf $archive $i.bk
  47.                 sleep 2
  48.                 rm $i.bk #suppression du dump en clair
  49.         fi
  50. done
  51. echo -e "Bases archivées:"
  52. echo -e tar -tvf $archive
  53. echo -e "Chiffrement de l'archive..."
  54. gpg --yes --output $pj --encrypt --recipient $dest $archive && rm $archive #suppression de l'archive en clair
  55.  
  56. echo -e "Envoi de l'email..."
  57. (cat mail.txt; uuencode $pj $pj) | mail -v -s $sujet $dest
Advertisement
Add Comment
Please, Sign In to add comment