##// END OF EJS Templates
i18n: updated translation for Polish...
i18n: updated translation for Polish Currently translated at 56.5% (614 of 1087 strings)

File last commit:

r7718:0a277465 default
r8092:7fef5132 default
Show More
kallithea_backup.py
106 lines | 3.7 KiB | text/x-python | PythonLexer
/ kallithea / bin / kallithea_backup.py
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189 # -*- coding: utf-8 -*-
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
Mads Kiilerich
cleanup: make module self-naming consistent...
r5376 kallithea.bin.kallithea_backup
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189
Repositories backup manager, it allows to backups all
repositories and send it to backup server using RSA key via ssh.
Bradley M. Kuhn
RhodeCode GmbH is not the sole author of this work
r4211 This file was forked by the Kallithea project in July 2014.
Original author and date, and relevant copyright and licensing information is below:
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189 :created_on: Feb 28, 2010
:author: marcink
Bradley M. Kuhn
RhodeCode GmbH is not the sole author of this work
r4211 :copyright: (c) 2013 RhodeCode GmbH, and others.
Bradley M. Kuhn
Correct licensing information in individual files....
r4208 :license: GPLv3, see LICENSE.md for more details.
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189 """
Mads Kiilerich
scripts: initial run of import cleanup using isort
r7718 import datetime
import logging
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189 import os
Mads Kiilerich
scripts: initial run of import cleanup using isort
r7718 import subprocess
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189 import sys
import tarfile
domruf
replace absolute /tmp paths to tempfile.gettempdir()
r5725 import tempfile
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189
Mads Kiilerich
scripts: initial run of import cleanup using isort
r7718
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189 logging.basicConfig(level=logging.DEBUG,
format="%(asctime)s %(levelname)-5.5s %(message)s")
class BackupManager(object):
def __init__(self, repos_location, rsa_key, backup_server):
today = datetime.datetime.now().weekday() + 1
self.backup_file_name = "repos.%s.tar.gz" % today
self.id_rsa_path = self.get_id_rsa(rsa_key)
self.repos_path = self.get_repos_path(repos_location)
self.backup_server = backup_server
domruf
replace absolute /tmp paths to tempfile.gettempdir()
r5725 self.backup_file_path = tempfile.gettempdir()
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189
logging.info('starting backup for %s', self.repos_path)
logging.info('backup target %s', self.backup_file_path)
def get_id_rsa(self, rsa_key):
if not os.path.isfile(rsa_key):
logging.error('Could not load id_rsa key file in %s', rsa_key)
sys.exit()
return rsa_key
def get_repos_path(self, path):
if not os.path.isdir(path):
logging.error('Wrong location for repositories in %s', path)
sys.exit()
return path
def backup_repos(self):
bckp_file = os.path.join(self.backup_file_path, self.backup_file_name)
tar = tarfile.open(bckp_file, "w:gz")
for dir_name in os.listdir(self.repos_path):
logging.info('backing up %s', dir_name)
tar.add(os.path.join(self.repos_path, dir_name), dir_name)
tar.close()
logging.info('finished backup of mercurial repositories')
def transfer_files(self):
params = {
'id_rsa_key': self.id_rsa_path,
'backup_file': os.path.join(self.backup_file_path,
self.backup_file_name),
'backup_server': self.backup_server
}
cmd = ['scp', '-l', '40000', '-i', '%(id_rsa_key)s' % params,
'%(backup_file)s' % params,
'%(backup_server)s' % params]
subprocess.call(cmd)
timeless@gmail.com
spelling: transferred
r5833 logging.info('Transferred file %s to %s', self.backup_file_name, cmd[4])
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189
def rm_file(self):
logging.info('Removing file %s', self.backup_file_name)
os.remove(os.path.join(self.backup_file_path, self.backup_file_name))
Lars Kruse
codingstyle: trivial whitespace fixes...
r6789
Bradley M. Kuhn
Rename helper tools (and fix inconsistent naming)
r4189 if __name__ == "__main__":
repo_location = '/home/repo_path'
backup_server = 'root@192.168.1.100:/backups/mercurial'
rsa_key = '/home/id_rsa'
B_MANAGER = BackupManager(repo_location, rsa_key, backup_server)
B_MANAGER.backup_repos()
B_MANAGER.transfer_files()
B_MANAGER.rm_file()