From 690ae5dc44b62b03fe13d9d932a32e751ddb448a Mon Sep 17 00:00:00 2001 From: etienne Date: Mon, 20 Jul 2009 07:20:36 +0000 Subject: [PATCH] fix recover git-svn-id: http://svn.parisson.org/svn/tools/trunk@68 457c0346-1240-4656-8a5a-9edca8063506 --- python-zopebackup/zope_backup.py | 7 +++--- python-zopebackup/zope_instance.py | 24 ++++++++++--------- python-zopebackup/zope_recover.py | 38 ++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 15 deletions(-) create mode 100755 python-zopebackup/zope_recover.py diff --git a/python-zopebackup/zope_backup.py b/python-zopebackup/zope_backup.py index b8afb29..8bfa929 100755 --- a/python-zopebackup/zope_backup.py +++ b/python-zopebackup/zope_backup.py @@ -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__': diff --git a/python-zopebackup/zope_instance.py b/python-zopebackup/zope_instance.py index 1dda76c..1013bc3 100644 --- a/python-zopebackup/zope_instance.py +++ b/python-zopebackup/zope_instance.py @@ -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 index 0000000..ea724c4 --- /dev/null +++ b/python-zopebackup/zope_recover.py @@ -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 !" + -- 2.39.5