[BASH] sauvegarde avec tar sur Debian

sauvegarde avec tar sur Debian [BASH] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 06-04-2010 à 09:37:16    

Salut à tous ! :D

 

Dans le cadre d'un serveur au boulot, je doit étudier une solution de sauvegarde "double" : à la fois sur un NAS (là pas de problème, NFS powered :lol: ) et sur un lecteur de bande (là ça se corse).
Le script doit pouvoir bosser seul, aussi bien en copie, qu'en suppression des sauvegardes de plus de "x" jours, pour récupérer un dossier (là "www", serveur web en l'occurrence, pas dur à trouver :o )

 

Voilà ce que ça donne pour mon script NAS (mon NAS est auparavant monter dans le fstab en tant que /media/nas) :

Code :
  1. #!/bin/bash
  2. # création d'un répertoire temporaire
  3. mkdir /home/monserver/SAVE
  4. chmod -R 777 /home/monserver/SAVE
  5. # récupération et compression
  6. tar cvfz /home/monserver/SAVE/sauve.$(date '+%d-%m-%y').tar.gz /home/monserver/www
  7. # droit pour la copie
  8. chmod -R 777 /home/monserver/SAVE
  9. # suppression des sauvegardes de plus de 7 jours
  10. rm -f  /media/nas/serverweb/sauve.$(date '+%d-%m-%y' --date '8 days ago').tar.gz
  11. rm -f  /media/nas/serverweb/sauve.$(date '+%d-%m-%y' --date '9 days ago').tar.gz
  12. rm -f  /media/nas/serverweb/sauve.$(date '+%d-%m-%y' --date '10 days ago').tar.gz
  13. rm -f  /media/nas/serverweb/sauve.$(date '+%d-%m-%y' --date '11 days ago').tar.gz
  14. rm -f  /media/nas/serverweb/sauve.$(date '+%d-%m-%y' --date '21 days ago').tar.gz
  15. rm -f  /media/nas/serverweb/sauve.$(date '+%d-%m-%y' --date '22 days ago').tar.gz
  16. rm -f  /media/nas/serverweb/sauve.$(date '+%d-%m-%y' --date '23 days ago').tar.gz
  17. rm -f  /media/nas/serverweb/sauve.$(date '+%d-%m-%y' --date '24 days ago').tar.gz
  18. #copie de la sauvegarde du jour
  19. chmod -R 777 /media/nas/serverweb/
  20. cp -a /home/monserver/SAVE/sauve.$(date '+%d-%m-%y').tar.gz /media/nas/serverweb
  21. #suppression de notre sauvegarde sur le serveur
  22. rm -R /home/monserver/SAVE
 

Jusque là, ça marche, no soucis. Maintenant ça se corse, le script de la sauvegarde sur bande, avec tar (restons simple, j'ai même mis un fichier de log dessus :pt1cable: ) :

Code :
  1. #!/bin/bash
  2. # script de sauvegarde sur bande
  3. #mon log de sauvegarde
  4. echo $(date '+%d-%m-%y') >> /home/monserver/sauvegarde.log
  5. # création d'un répertoire temporaire
  6. mkdir /home/monserver/SAVE
  7. chmod -R 777 /home/monserver/SAVE
  8. # récupération et compression
  9. tar cvfz /home/monserver/SAVE/sauve.$(date '+%d-%m-%y').tar.gz /home/monserver/www
  10. # droit pour la copie
  11. chmod -R 777 /home/monserver/SAVE
  12. # Rembobinage  de la bande si necessaire
  13. mt -f /dev/st0 rewind
  14. RETVAL=$?
  15. case "$RETVAL" in
  16. #bande présente
  17. 0)
  18. time tar -cvf /dev/st0 /home/monserver/SAVE >> /home/monserver/sauvegarde.log
  19. tar tvf /dev/st0 >> /home/monserver/sauvegarde.log
  20. df -h /dev/st0 >> /home/monserver/sauvegarde.log
  21. sleep 10
  22. # Ejection de la bande
  23. # mt -f /dev/st0 offline
  24. ;;
  25. # bande absente
  26. 1)
  27. echo "Pas de bande" >> /home/monserver/sauvegarde.log
  28. ;;
  29. esac
  30. echo "------------------------------------" >> /home/monserver/sauvegarde.log
  31. #suppression de notre sauvegarde sur le serveur
  32. rm -R /home/monserver/SAVE
 

Donc là aussi, ça marche, mais je ne sais pas comment implémenter ma suppression automatique des sauvegardes de plus de 7 jours (ou plus, si on décide que la sauvegarde sur bande est par semaine par exemple) sur le script de la sauvegarde sur bande :/

 

Quelqu'un a une ou des idées dessus ? :bounce:


Message édité par bardiel le 06-04-2010 à 13:12:00

---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 06-04-2010 à 09:37:16   

Reply

Marsh Posté le 07-04-2010 à 10:27:46    

Hé bé ? personne ? :D
Ce n'est pas possible de le faire ou quoi ? :/
 
Bon j'avais pensé à une solution, un peu (carrément ? :whistle: ) tache :
Je récupère tout ce qu'il y a sur la bande, je supprime ce que je souhaite, j'efface la bande, je replaque tout dessus (j'ai dit "restons simple" :pt1cable: )
Ce qui me donnerait en code (j'en profite, j'optimise en n'effectuant aucune opération si pas de bande :D ) :
 

Code :
  1. #!/bin/bash
  2. # script de sauvegarde sur bande
  3. #mon log de sauvegarde
  4. echo $(date '+%d-%m-%y') >> /home/monserver/sauvegarde.log
  5. # Rembobinage  de la bande si necessaire
  6. mt -f /dev/st0 rewind
  7. RETVAL=$?
  8. case "$RETVAL" in
  9. #bande présente
  10. 0)
  11. # création d'un répertoire temporaire
  12. mkdir /home/monserver/SAVE
  13. chmod -R 777 /home/monserver/SAVE
  14. # récupération et compression de la sauvegarde du jour
  15. tar cvfz /home/monserver/SAVE/sauve.$(date '+%d-%m-%y').tar.gz /home/monserver/www
  16. # droit pour la copie
  17. chmod -R 777 /home/monserver/SAVE
  18. # j'extrait la bande
  19. tar -xvf /dev/st0
  20. # je supprime mes anciennes sauvegardes
  21. rm -f  /home/monserver/SAVE/sauve.$(date '+%d-%m-%y' --date '8 days ago').tar.gz
  22. rm -f  /home/monserver/SAVE/sauve.$(date '+%d-%m-%y' --date '9 days ago').tar.gz
  23. rm -f  /home/monserver/SAVE/sauve.$(date '+%d-%m-%y' --date '10 days ago').tar.gz
  24. rm -f  /home/monserver/SAVE/sauve.$(date '+%d-%m-%y' --date '11 days ago').tar.gz
  25. rm -f  /home/monserver/SAVE/sauve.$(date '+%d-%m-%y' --date '21 days ago').tar.gz
  26. rm -f  /home/monserver/SAVE/sauve.$(date '+%d-%m-%y' --date '22 days ago').tar.gz
  27. rm -f  /home/monserver/SAVE/sauve.$(date '+%d-%m-%y' --date '23 days ago').tar.gz
  28. rm -f  /home/monserver/SAVE/sauve.$(date '+%d-%m-%y' --date '24 days ago').tar.gz
  29. # j'efface ma bande
  30. mt -f /dev/st0 erase
  31. # et je replaque tout
  32. time tar -cvf /dev/st0 /home/monserver/SAVE >> /home/monserver/sauvegarde.log
  33. tar tvf /dev/st0 >> /home/monserver/sauvegarde.log
  34. df -h /dev/st0 >> /home/monserver/sauvegarde.log
  35. ;;
  36. # bande absente
  37. 1)
  38. echo "Pas de bande" >> /home/monserver/sauvegarde.log
  39. ;;
  40. esac
  41. echo "------------------------------------" >> /home/monserver/sauvegarde.log
  42. #suppression de notre sauvegarde sur le serveur
  43. rm -R /home/monserver/SAVE


C'est crade, c'est long (j'ai essayé un effacement, ça dure au moins 1h  :kaola: ).
 
J'avais vu ici l'utilisation de mt avec la gestion des enregistrements. Soucis comment sont "gérés" ces enregistrements ? par block de taille fixe ? comment on les gère ?


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 08-04-2010 à 21:08:59    

bon, pour upper ma question (et pour donner un peu la suite quand même), un autre bout de code destiné là à la récupération sur mon NAS :

Code :
  1. #!/bin/bash
  2. rm -f /home/monserver/SAVE
  3. mkdir /home/monserver/SAVE
  4. echo 'Entrez la date de la sauvegarde'
  5. echo '(Format jj-mm-aaaa)'
  6. read madate
  7. if test -f /media/nas/serverweb/sauve.$(madate); then
  8. cd /
  9. tar -xvf  sauve.$(madate).tar.gz
  10. fi


c'est brut de forme (pas testé :o je corrigerais demain au besoin) et destiné à lancer certains d'entre vous sur ma question :
comment implémenter ma suppression automatique des sauvegardes datant de 'x' jours dans mon script du lecteur de bande ?


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 08-04-2010 à 23:01:53    

Il faudrait peut etre que tu te renseigne pour savoir comment sont stocker les données sur le type de bande que tu as. Je pourrais pas te dire, je n'ai pas encore eu a faire à de la bande.  
 
Si c'est comme pour un systeme de fichier classique, ca devrait pas etre bien compliqué.

Reply

Marsh Posté le 09-04-2010 à 16:31:10    

Ben c'est de la bande basique (ou DAT), pas du LTO, pas du Dell (RD1000)...
On a de la DDS4 (4mm, 20Go natif / 40Go compressé), vu par un lecteur Sony SDT11000 branché en SCSI... de la bande quoi (y'a pas 25ooo types différents dessus).
 
Le soucis c'est que contrairement à ce que je crois que tu penses, qu'il y a un formatage particulier (un genre de Ext2/3/4 ou Fat ou NTFS) or ce n'est pas le cas, le formatage "bande" agit par accès séquentiel, par ajout à chaque fois jusqu'à ce que la bande soit pleine.
Ce que je souhaite c'est justement savoir comment accéder aux séquences d'enregistrement précédents pour les effacer sans effacer la dernière et si possible verrouiller une taille (genre 4Go par sauvegarde, sur 5 jours j'ai mes 20Go)
J'ai mt, tar... les outils de base disponible donc.
 
Même l'utilitaire de sauvegarde de base de Windows arrive à faire mieux, c'est dingue non ? :o (pas taper :D )
Je vais quand même pas être obligé d'installer bacula ? :heink:


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed