#!/usr/bin/env python
"""Script para recuperar los backups incrementales de subversion.
Intenta seguir por donde lo ha dejado el dia anterior. Se tiene que hacer
todos los dias, si nos saltamos un dia ya hay que hacer la importacion a mano """
import os
import glob
import subprocess
import sys
# import pdb
# Directorio donde ubicamos los repositorios y los backups
REPOS="/usr/local/repos/"
BACK="/media/backups/"
# Fichero de LOG
LOG="/root/scripts/logsubversion.log"
# Listamos los repositorios
lista=os.listdir(REPOS)
# Realizamos un loop en la lista y navegamos hacia el que sea un repositorio
for elemento in lista:
if os.path.isdir(REPOS+elemento):
# Capturamos en numero de version actual
filerev=subprocess.Popen(["svnlook", "youngest", "/usr/local/repos/"+elemento], stdout=subprocess.PIPE).communicate()[0]
# Incrementamos el numero de version porque es el que tenemos que buscar
a=int(filerev)+1
# pdb.set_trace()
# Realizamos una captura de los errores (fallo nfs, etc, etc)
try:
for elem in os.listdir(BACK+elemento):
#print elem
nuevoa=str(a)
nuevoelem=elemento+".incr."+nuevoa+"_"
#print nuevoelem
if (elem.find(nuevoelem)!=-1):
try:
os.system("svnadmin load /usr/local/repos/"+elemento+" < /media/backups/"+elemento+"/"+elem)
fich=open(LOG,"a")
fich.write("actualizado "+elemento+" desde revision "+nuevoa+"\n")
fich.close()
except:
fich=open(LOG,"a")
fich.write("error actualizando "+elemento+"\n")
fich.close()
except:
pass
Seguro que se puede hacer más sencillo, más rápido, etc, etc..., pero esto es lo que se me ha ocurrido. Los dump los guardo con un formato fichero.incr.45_56 donde 45_56 son los números de las versiones que se han guardado.
No hay comentarios:
Publicar un comentario