Python ile SVN Yedekleri Alma

Sistemlerde yedek almak önemli bir iştir. Başınıza neyin ne zaman geleceği hiç belli olmaz. Sunucu yedekleri düzenli olarak alınsada, svn gibi kodların tutulduğu yedeklerin de belli aralıklarla dump ile alınması gereklidir. Bunun için uzun zamandır kullandığım ve python ile yazdığım aşağıdaki kodu kullanıyorum. Bu kod svn projelerini tüm alt projelerle birlikte sizin göstereceğiniz bir dizine projenin dump’ını alarak bulunduğu tarihte yedekliyor. İşinizi görecektir diye düşünüyorum.

 

"""
Author: Aydin Demirel
Description: SVN Backup script. This script is backing up all svn projects with sub-projects.
"""

#!/usr/bin/env python

SVN_DIR = "/usr/repos/svn"
BACKUP_DIR = "/usr/WEB/svn_backups"

import os
from datetime import datetime
import commands

i = datetime.now()
current_time = i.strftime('%Y-%m-%d')

# use current folder or give a folder name
folder = SVN_DIR
for (paths, dirs, files) in os.walk(folder):
for fname in dirs:
full_name = os.path.join(paths, fname)
last_folder = os.path.split(fname)
if os.path.isdir("%s/db" % paths):
split_real_path = os.path.relpath(paths, SVN_DIR)
sub_backup_folder = BACKUP_DIR + "/" + current_time + "/" + split_real_path
print("%s klasoru olusturuluyor.." % sub_backup_folder)
os.system("mkdir -p %s" % sub_backup_folder)
s = 0
print("%s projesi isleniyor" % paths)
project_path = []
project_path.append(os.path.split(split_real_path))
v = commands.getoutput("svnlook youngest %s" % paths)
bkp_file_name="%s-ver-%s.svndump" % (project_path[0][1], v)
print("%s projesi yedekleniyor.." % project_path[0][1])
os.system("svnadmin dump %s -q -r'%s:%s' --incremental | bzip2 > %s/%s.bz2" % (paths, s, v, sub_backup_folder, bkp_file_name))

Leave a Reply