Mercurial > kallithea
comparison pylons_app/lib/backup_manager.py @ 34:b4b25ece7797
Code refactoring, and changed proper way of removing files
author | Marcin Kuzminski <marcin@python-blog.com> |
---|---|
date | Tue, 09 Mar 2010 00:22:29 +0100 |
parents | 22b2234e51cd |
children | c92f827280a3 |
comparison
equal
deleted
inserted
replaced
33:22b2234e51cd | 34:b4b25ece7797 |
---|---|
1 '''BACKUP MANAGER''' | |
1 import logging | 2 import logging |
2 from mercurial import config | 3 from mercurial import config |
3 import tarfile | 4 import tarfile |
4 import os | 5 import os |
5 import datetime | 6 import datetime |
8 logging.basicConfig(level=logging.DEBUG, | 9 logging.basicConfig(level=logging.DEBUG, |
9 format="%(asctime)s %(levelname)-5.5s %(message)s") | 10 format="%(asctime)s %(levelname)-5.5s %(message)s") |
10 | 11 |
11 class BackupManager(object): | 12 class BackupManager(object): |
12 def __init__(self): | 13 def __init__(self): |
14 self.repos_path = None | |
15 self.backup_file_name = None | |
13 self.id_rsa_path = '/home/pylons/id_rsa' | 16 self.id_rsa_path = '/home/pylons/id_rsa' |
14 self.check_id_rsa() | 17 self.check_id_rsa() |
15 cur_dir = os.path.realpath(__file__) | 18 cur_dir = os.path.realpath(__file__) |
16 dn = os.path.dirname | 19 dn = os.path.dirname |
17 self.backup_file_path = os.path.join(dn(dn(dn(cur_dir))), 'data') | 20 self.backup_file_path = os.path.join(dn(dn(dn(cur_dir))), 'data') |
28 if not os.path.isdir(self.repos_path): | 31 if not os.path.isdir(self.repos_path): |
29 raise Exception('Not a valid directory in %s' % self.repos_path) | 32 raise Exception('Not a valid directory in %s' % self.repos_path) |
30 | 33 |
31 def check_id_rsa(self): | 34 def check_id_rsa(self): |
32 if not os.path.isfile(self.id_rsa_path): | 35 if not os.path.isfile(self.id_rsa_path): |
33 logging.error('Could not load id_rsa key file in %s', self.id_rsa_path) | 36 logging.error('Could not load id_rsa key file in %s', |
37 self.id_rsa_path) | |
34 sys.exit() | 38 sys.exit() |
35 | 39 |
36 def set_repos_path(self, paths): | 40 def set_repos_path(self, paths): |
37 repos_path = paths[0][1].split('/') | 41 repos_path = paths[0][1].split('/') |
38 if repos_path[-1] in ['*', '**']: | 42 if repos_path[-1] in ['*', '**']: |
45 today = datetime.datetime.now().weekday() + 1 | 49 today = datetime.datetime.now().weekday() + 1 |
46 self.backup_file_name = "mercurial_repos.%s.tar.gz" % today | 50 self.backup_file_name = "mercurial_repos.%s.tar.gz" % today |
47 bckp_file = os.path.join(self.backup_file_path, self.backup_file_name) | 51 bckp_file = os.path.join(self.backup_file_path, self.backup_file_name) |
48 tar = tarfile.open(bckp_file, "w:gz") | 52 tar = tarfile.open(bckp_file, "w:gz") |
49 | 53 |
50 for dir in os.listdir(self.repos_path): | 54 for dir_name in os.listdir(self.repos_path): |
51 logging.info('backing up %s', dir) | 55 logging.info('backing up %s', dir_name) |
52 tar.add(os.path.join(self.repos_path, dir), dir) | 56 tar.add(os.path.join(self.repos_path, dir_name), dir_name) |
53 tar.close() | 57 tar.close() |
54 logging.info('finished backup of mercurial repositories') | 58 logging.info('finished backup of mercurial repositories') |
55 | 59 |
56 | 60 |
57 | 61 |
68 subprocess.Popen(cmd) | 72 subprocess.Popen(cmd) |
69 logging.info('Transfered file %s to %s', self.backup_file_name, cmd[4]) | 73 logging.info('Transfered file %s to %s', self.backup_file_name, cmd[4]) |
70 | 74 |
71 | 75 |
72 def rm_file(self): | 76 def rm_file(self): |
73 os.remove(self.backup_file_path) | 77 os.remove(os.path.join(self.backup_file_path, self.backup_file_name)) |
74 | 78 |
75 | 79 |
76 | 80 |
77 if __name__ == "__main__": | 81 if __name__ == "__main__": |
78 bm = BackupManager() | 82 B_MANAGER = BackupManager() |
79 bm.backup_repos() | 83 B_MANAGER.backup_repos() |
80 bm.transfer_files() | 84 B_MANAGER.transfer_files() |
81 bm.rm_file() | 85 B_MANAGER.rm_file() |
82 | 86 |
83 | 87 |