From 5c1b26afb7c9ce4b98d2352226e7fc6e6b7cdad0 Mon Sep 17 00:00:00 2001 From: yomguy Date: Sat, 3 Nov 2007 17:12:25 +0000 Subject: [PATCH] First import git-svn-id: http://svn.parisson.org/svn/tools/trunk@1 457c0346-1240-4656-8a5a-9edca8063506 --- zope_instance.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 zope_instance.py diff --git a/zope_instance.py b/zope_instance.py new file mode 100644 index 0000000..ad3323b --- /dev/null +++ b/zope_instance.py @@ -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) + + -- 2.39.5