halvar.at bcom Python Tools Plone Zope Visual Basic Programmierung SW3 PC Computer Netzwerk Linux Windows Shop

Skip to content

Gerolds Homepage

Sections
Personal tools
You are here: Home Zope/Plone Anleitungen ZODB komprimieren
Document Actions

Komprimieren einer Zope Datenbank

Das Packen bzw. das Komprimieren einer Zope-Datenbank; Stichworte: pack, compress

  (Zope 2.6.4)

Die Zope-Datenbank, in der alle Daten des Zope-Servers gespeichert werden, wird täglich größer. Jede Änderung wird an die Datei angehängt. Das hat den Vorteil, dass man in Zope einzelne Arbeitsschritte rückgängig machen kann. Der große Nachteil ist, dass die Datei immer größer wird. Man sollte also in regelmäßigen Abständen, sagen wir mal wöchentlich oder monatlich, die Zope-Datenbank komprimieren.
Die alte Datenbank-Datei wird nach erfolgreichem Komprimieren in Data.fs.old umbenannt und stellt damit eine einfache Datensicherung dar. Eine gut durchdachte, geprüfte und überwachte Datensicherung wird dadurch aber nicht ersetzt.

Manuell:

Man kann die Datenbank im ZMI (Zope Management Interface) komprimieren:
Zu finden unter "Control_Panel/Database Management".
 (Url: /Control_Panel/Database/manage_main)

Eine andere Möglichkeit:

Man gibt im Browser folgende URL ein, meldet sich an und wartet bis die Datenbank komprimiert wurde.
http://<zope-domain>:8080/Control_Panel/manage_pack

Automatisch mit "wget":

Dieser Ansatz baut auf der Erkenntnis auf, dass man mit dem Eingeben einer Url in einen Browser, die Datenbank komprimieren kann. Hier mein Vorschlag mit dem Befehl "wget".

wget -O /dev/null --timeout=3600 --proxy=off \
--http-user=<Benutzername> --http-passwd=<Passwort> \ http://<BasisURL>:8080/Control_Panel/manage_pack?days:float=<Anzahl_Tage>

wget ist bei den meisten Linux-Distributionen mit dabei. Und unter Windows kann man wget auch über Cygwin verwenden.
Und jetzt kommt noch das "Automatisch" aus der Überschrift zum Zug --> Einfach per Cron-Job, oder unter Windows per geplantem Task, ein Skript ausführen lassen, welches zuerst die Datenbank sichert und dann mit wget die Datenbank komprimiert. 

Andere Lösungen werden hier erklärt:

http://www.dzug.org/dokumentation/faqs/AdministrationKonfiguration/datenbank_packen

http://old.dzug.org/Members/mschopen/howto/zpackdb

http://www.zope.org/Members/fritz/howto_compress_datafs_using_cron

http://www.zope.org/Members/fritz/compress_datafs/

 

Zusatz:

Da eine der oben angegebenen URLs noch auf dem alten Zope-Server ist und ich nicht weiß, wie lange dieser noch existiert, habe ich sicherheitshalber das Skript von Marcus Schopen hierher übernommen. Falls jemand etwas dagegen hat --> bitte melden. Ich werde es dann sofort wieder raus nehmen. :-)

#!/usr/bin/python -O

 import sys, urllib, os, shutil
 from time import *

 username="MANAGER"
 password="PASSWORD"
 zope="http://localhost:8080/"

 zope_path = "/home/zope/Zope/"
 backup_path = "/backup/"

 datafs = zope_path + str("var/Data.fs")
 backup = backup_path + "Data.fs." + \
   strftime("%Y%m%d%H%M%S", localtime(time()))

 class NoGUI_URLopener(urllib.FancyURLopener):
   def __init__(self, username, password, *args):
      apply(urllib.FancyURLopener.__init__, (self,) + args)

      self.username = username
      self.password = password
      self.asked = 0

   def prompt_user_passwd(self, host, realm):
      if self.asked:
         raise "Unauthorised"
      else:
         self.asked = 1
         return self.username, self.password

 try:
   days = sys.argv[1]
 except:
   days = 0

 try:
    shutil.copy(datafs, backup)
 except:
   print "Can't copy Data.fs"
   exit

 urllib._urlopener = NoGUI_URLopener(username, password)
 urllib.urlretrieve( \
   "%s/Control_Panel/Database/manage_pack?days:float=%s" % \
   (zope, days))

 print "###" + zope_path + "/var ###"
 os.system("ls -l " + zope_path + "var/")

 print "\n###" + backup_path + " ###"
 os.system("ls -l " + backup_path)

Informationen zu Wget:

http://www.gnu.org/software/wget/wget.html

http://www.gnu.org/directory/wget.html

http://www.interlog.com/~tcharron/wgetwin.html

 

(Gerold Penz; http://halvar.at)

 

 

Powered by Plone   Powered by Bcom   Powered by Gentoo-Linux

Diese Seite erfüllt evt. :-) folgende Standards: