]> git.parisson.com Git - tools.git/commitdiff
First import
authoryomguy <yomguy@457c0346-1240-4656-8a5a-9edca8063506>
Sat, 3 Nov 2007 17:12:25 +0000 (17:12 +0000)
committeryomguy <yomguy@457c0346-1240-4656-8a5a-9edca8063506>
Sat, 3 Nov 2007 17:12:25 +0000 (17:12 +0000)
git-svn-id: http://svn.parisson.org/svn/tools/trunk@1 457c0346-1240-4656-8a5a-9edca8063506

zope_instance.py [new file with mode: 0644]

diff --git a/zope_instance.py b/zope_instance.py
new file mode 100644 (file)
index 0000000..ad3323b
--- /dev/null
@@ -0,0 +1,81 @@
+#!/usr/bin/python
+# Backups zope instances
+
+import os
+import sys
+from optparse import OptionParser
+
+class ZopeInstance:
+
+    def __init__(self, version, instance, backup_dir):
+        self.backup_dir = backup_dir
+        self.versions = ['2.7', '2.9', '2.8', '2.10']
+        self.instance_main_dir = '/var/lib'
+        self.zope_main_dir = '/usr/lib'
+          
+        self.version = version
+        self.instance = instance
+        self.instance_dir = self.instance_main_dir + os.sep + 'zope' + version + os.sep + \
+                        'instance' + os.sep + self.instance
+        self.instance_data = self.instance_dir + os.sep + 'var' + os.sep + 'Data.fs'
+        self.instance_products =self.instance_dir + os.sep + 'Products' + os.sep
+        self.instance_backup_dir = self.backup_dir + os.sep + version + os.sep + instance
+        self.repozo = self.zope_main_dir + os.sep + 'zope' + self.version + os.sep + 'bin' + os.sep + 'repozo.py'
+
+    def get_instances(self):
+        dict = {}
+        for version in self.versions:
+            #print version
+            path = self.instance_main_dir + os.sep + 'zope' + version + os.sep + 'instance'
+            if os.path.exists(path):
+                dict[version] = os.listdir(path)
+                #print dict
+        return dict
+
+    def backup(self):
+        path = self.instance_backup_dir+ os.sep + 'Data'
+        if not os.path.exists(path):
+            os.makedirs(path)
+        if os.path.exists(self.instance_data):
+            command = 'sudo ' + self.repozo +' -Bvz -r ' + path + ' -f ' + self.instance_data
+            os.system(command)
+            command = 'sudo chmod 700 ' + path + os.sep + '*'
+            os.system(command)
+        else:
+            print self.instance_data + ' does not exists !'
+        if not os.path.exists(self.instance_backup_dir):
+            os.makedirs(self.instance_backup_dir)
+        if os.path.exists(self.instance_products):
+            command = 'sudo tar czf ' + self.instance_backup_dir + os.sep + \
+                      'Products.tar.gz ' + self.instance_products
+            os.system(command)
+        print self.instance + ' backuped !'
+
+    def recover(self):
+        command = 'sudo ' + self.repozo + ' -Rvz -r ' + self.instance_backup_dir + os.sep + \
+                    'Data -o ' + self.instance_data
+        if os.path.exists(self.instance_data):
+            os.system(command)
+        else:
+            print self.instance_data + ' does not exists !'
+        os.chdir(self.instance_backup_dir)
+        command = 'sudo tar xzf '+self.instance_backup_dir+os.sep+'Products.tar.gz && ' + \
+                  'sudo rsync -a ' + self.instance_backup_dir+os.sep+self.instance_products + \
+                  ' ' + self.instance_products + ' && ' + \
+                  'sudo ' + self.instance_dir+os.sep+'bin'+os.sep+'zopectl restart && ' + \
+                  'sudo rm -rf ' + self.instance_backup_dir+os.sep+'var'
+        os.system(command)
+        print self.instance + ' recovered !'
+
+        
+    def import_from(self, user, server):
+        command = 'sudo rsync -a --rsh="ssh -l '+user+'" ' + \
+                  user+'@'+server+':'+self.instance_backup_dir+os.sep + ' ' + self.instance_backup_dir+os.sep
+        os.system(command)
+
+    def export_to(self, user, server):
+        command = 'sudo rsync -a --rsh="ssh -l '+user+'" ' + \
+                  self.instance_backup_dir+os.sep  + ' ' + user+'@'+server+':'+self.instance_backup_dir+os.sep
+        os.system(command)
+
+