]> git.parisson.com Git - tools.git/commitdiff
fix recover
authoretienne <etienne@457c0346-1240-4656-8a5a-9edca8063506>
Mon, 20 Jul 2009 07:20:36 +0000 (07:20 +0000)
committeretienne <etienne@457c0346-1240-4656-8a5a-9edca8063506>
Mon, 20 Jul 2009 07:20:36 +0000 (07:20 +0000)
git-svn-id: http://svn.parisson.org/svn/tools/trunk@68 457c0346-1240-4656-8a5a-9edca8063506

python-zopebackup/zope_backup.py
python-zopebackup/zope_instance.py
python-zopebackup/zope_recover.py [new file with mode: 0755]

index b8afb29e38d599f8588ad7968a2458076b7265af..8bfa9291c7b84a48b32e45e039263d7e6b9bac96 100755 (executable)
@@ -17,19 +17,18 @@ info = 'zope_backup v'+version+'\n'+ \
 print info
 
 backup_dir = sys.argv[-1]
-if os.path.exists(backup_dir):
+if not os.path.exists(backup_dir):
     sys.exit('This backup directory does not exists !')
 
 z = ZopeInstall()
 instances = z.get_instances()
-instance_main_dir = z.instance_main_dir
 
 def backup_all():
     for version in instances:
        for instance in instances[version]:
-            z = ZopeInstance(version, instance)
+            z = ZopeInstance(version, instance, backup_dir)
             print 'Backuping : ' + z.get_instance_dir() + '...'
-            z.backup(backup_dir)
+            z.backup()
             print version + ': ' + instance + ' backuped !'
 
 if __name__ == '__main__':
index 1dda76c0c823190e56a276be24b472b1addb318b..1013bc30acac9f5330390b13a25031dacc4e2e96 100644 (file)
@@ -53,10 +53,11 @@ class ZopeInstance(ZopeInstall):
     """Expose Zope instances to several python methods that simplifies admins' life
     (backup, recover, import, etc...)"""
     
-    def __init__(self, version, instance):
+    def __init__(self, version, instance, backup_dir):
         ZopeInstall.__init__(self)
         self.version = version
         self.instance = instance
+        self.backup_dir = backup_dir    
         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'
@@ -65,29 +66,29 @@ class ZopeInstance(ZopeInstall):
         self.instance_etc = self.instance_dir + os.sep + 'etc' + os.sep
         self.instance_lib = self.instance_dir + os.sep + 'lib' + os.sep
         self.repozo = self.zope_main_dir + os.sep + 'zope' + self.version + os.sep + 'bin' + os.sep + 'repozo.py'
+        self.instance_backup_dir = self.backup_dir + os.sep + self.version + os.sep + self.instance
 
     def get_instance_dir(self):
         return self.instance_dir
 
     def tar(self, name, sub_dir):
+        os.chdir(self.instance_backup_dir)
         if os.path.exists(sub_dir):
             command = 'tar czf ' + self.instance_backup_dir + os.sep + \
-                      name + '.tar.gz ' + sub_dir
+                      name + '.tar.gz ' + sub_dir + ' --exclude=Data.fs'
             os.system(command)
 
     def untar(self, name, sub_dir):
-        os.chdir(self.instance_dir)
-        command = 'tar xzf '+self.instance_backup_dir+os.sep+name+'.tar.gz && ' + \
-                  'rsync -a --delete ' + self.instance_backup_dir+os.sep+sub_dir + \
-                               ' ' + sub_dir + os.sep + ' && ' + \
-                  'chown -R zope:zope ' + sub_dir + ' && ' + \
-                  'rm -rf ' + self.instance_backup_dir+os.sep+name
+        os.chdir(self.instance_backup_dir)
+        print 'Recovering ' + sub_dir
+        command = 'tar xzf ' + name + '.tar.gz && ' + \
+                  'rsync -a ' + './' + self.instance_dir + os.sep + name + os.sep + ' ' + sub_dir + ' && ' + \
+                  'chown -R zope:zope ' + sub_dir + os.sep + ' && ' + \
+                  'rm -rf ' + './' + self.instance_dir + os.sep + name  
         os.system(command)
 
-    def backup(self, backup_dir):
+    def backup(self):
        """Backup the instance"""
-        self.backup_dir = backup_dir
-        self.instance_backup_dir = self.backup_dir + os.sep + self.version + os.sep + self.instance
 
         path = self.instance_backup_dir+ os.sep + 'Data'
         if not os.path.exists(path):
@@ -108,6 +109,7 @@ class ZopeInstance(ZopeInstall):
         self.tar('etc', self.instance_etc)
         self.tar('lib', self.instance_lib)
 
+        'rm -rf ' + './' + self.instance_dir
         print self.instance + ' backuped !'
 
     def recover(self):
diff --git a/python-zopebackup/zope_recover.py b/python-zopebackup/zope_recover.py
new file mode 100755 (executable)
index 0000000..ea724c4
--- /dev/null
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+# Recover all zope instances (any versions)
+#
+# Depends : zope_instance.py
+# Copyright (C) 2007-2009 Guillaume Pellerin
+
+import os
+import sys
+from zope_instance import *
+
+version = '0.2'
+info = 'zope_recover v'+version+'\n'+ \
+       """Copyright (C) 2007-2009 Guillaume Pellerin
+       Usage: zope_recover DIRECTORY
+       where DIRECTORY is the directory where you want to backup 
+       the instances of the different versions of zope."""
+print info
+
+backup_dir = sys.argv[-1]
+#print backup_dir
+if not os.path.exists(backup_dir):
+    sys.exit('This backup directory does not exists !')
+
+z = ZopeInstall()
+instances = z.get_instances()
+
+def recover_all():
+    for version in instances:
+       for instance in instances[version]:
+            z = ZopeInstance(version, instance, backup_dir)
+            print 'Recovering : ' + z.get_instance_dir() + '...'
+            z.recover()
+            print version + ': ' + instance + ' recovered !'
+
+if __name__ == '__main__':
+    recover_all()
+    print "Recover all Zope instances done !"
+