code_junkie

What is the correct way to backup ZODB blobs

Nov 13th, 2011
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. # per a fer un full : ./cron_nocturn.sh full
  4.  
  5. ZEO_FOLDER=/var/plone/ZEO
  6.  
  7. # Zeo port
  8. ZEO_PORT = 8023
  9.  
  10. # Name of the DB
  11. ZEO_DB = zodb1
  12.  
  13. BACKUP_FOLDER=/backup/plone
  14.  
  15. LOGBACKUP=/var/plone/ZEO/backup.log
  16.  
  17. BACKUPDIR=`date +%d`
  18.  
  19. echo "INICI BACKUP" >> $LOGBACKUP
  20. echo `date` >> $LOGBACKUP
  21.  
  22. # Fem el packing
  23.  
  24. if [ "$1" = "full" ]; then
  25. $ZEO_FOLDER/bin/zeopack -S $ZEO_DB -p $ZEO_PORT -h 127.0.0.1
  26.  
  27.  
  28. echo " Comprovant folders"
  29. #mirem si existeix el folder de backup
  30. if ! [ -x $BACKUP_FOLDER/$ZEO_DB ]; then
  31. mkdir $BACKUP_FOLDER/$ZEO_DB
  32. fi
  33.  
  34. #mirem si existeix el backup folder del dia
  35. if ! [ -x $BACKUP_FOLDER/blobs/$BACKUPDIR/ ] ; then
  36. mkdir $BACKUP_FOLDER/blobs/$BACKUPDIR/
  37. fi
  38.  
  39. echo " Backup Data.fs"
  40. # backup de Data.fs
  41. if [ "$1" = "full" ]; then
  42. echo " Copiant Data.fs"
  43. $ZEO_FOLDER/bin/repozo -B -F -r $BACKUP_FOLDER/$ZEO_DB/ -f $ZEO_FOLDER/var/filestorage/Data_$ZEO_DB.fs
  44. echo " Purgant backups antics"
  45. $ZEO_FOLDER/neteja.py -l $BACKUP_FOLDER/$ZEO_DB -k 2
  46. else
  47. $ZEO_FOLDER/bin/repozo -B -r $BACKUP_FOLDER/$ZEO_DB/ -f $ZEO_FOLDER/var/filestorage/Data_$ZEO_DB.fs
  48. fi
  49.  
  50. echo " Copiant blobs"
  51. # backup blobs
  52. rm -rf $BACKUP_FOLDER/blobs/$BACKUPDIR
  53. cd $BACKUP_FOLDER/current-blobs && find . -print | cpio -dplm $BACKUP_FOLDER/blobs/$BACKUPDIR
  54. rsync --force --ignore-errors --delete --update -a $ZEO_FOLDER/var/blobs/ $BACKUP_FOLDER/current-blobs/
  55.  
  56.  
  57. echo "FI BACKUP" >> $LOGBACKUP
  58. echo `date` >> $LOGBACKUP
  59.  
  60. #!/usr/bin/python2.4
  61.  
  62. # neteja.py -l [directori_desti] -k [numero_fulls_a_mantenir]
  63. # Script que neteja un directori amb backups i guarda nomes els ultims fulls que li especifiquis
  64. # Es basa en la utilitzacio de collective.recipe.backup
  65. # Author: Victor Fernandez de Alba <[email protected]>
  66.  
  67. import sys, getopt
  68.  
  69. sys.path[0:0] = [
  70. '/var/plone/genwebupcZEO/produccio/eggs/collective.recipe.backup-1.3-py2.4.egg',
  71. '/var/plone/genwebupcZEO/produccio/eggs/zc.buildout-1.4.2-py2.4.egg',
  72. '/var/plone/genwebupcZEO/produccio/eggs/zc.recipe.egg-1.2.2-py2.4.egg',
  73. '/var/plone/genwebupcZEO/produccio/eggs/setuptools-0.6c11-py2.4.egg',
  74. ]
  75.  
  76. import collective.recipe.backup.repozorunner
  77.  
  78. argv = sys.argv[1:]
  79. try:
  80. opts, args = getopt.getopt(argv, "l:k:", ["location=", "keep="])
  81. except getopt.GetoptError:
  82. print "neteja.py -l [directori_desti] -k [numero_fulls_a_mantenir]"
  83. sys.exit(2)
  84.  
  85. for opt, arg in opts:
  86. if opt in ("-l", "--location"):
  87. location = arg
  88. elif opt in ("-k", "--keep"):
  89. keep = arg
  90.  
  91. if len(opts)<2:
  92. print "neteja.py -l [directori_desti] -k [numero_fulls_a_mantenir]"
  93. sys.exit(2)
  94.  
  95. collective.recipe.backup.repozorunner.cleanup(location, keep)
Add Comment
Please, Sign In to add comment