This is a nice way to control the backup in our company. I just Embed python with rsync
This is a basci scheme.
'a' copy to 'b', files in production are copy to 'a' and 'b' copy to 'c'--------------------------
A—-> B —> C
-------------------------
#!/usr/bin/env python #better backup, made in python #Autor: peter pjl@hpc.com.py
from subprocess import call import sys import time import datetime def bkp()
for bkp in [0, 1, 2]:
if bkp == 0:
#B to C
sync("/mnt/company/","192.168.1.16:/mnt/companybckall","company")
sync("/mnt/company1/","192.168.1.16:/mnt/company1bckall","company1")
sync("/mnt/company2/","192.168.1.16:/mnt/company2bckall","company2")
sync("/mnt/company3/","192.168.1.16:/mnt/company3bckall","company3")
elif bkp == 1:
#files in production to A
sync("/media/company/","/mnt/companybckall","company")
sync("192.168.12.2:/media/users/company/","/mnt/companybckall","company1")
sync("192.168.13.2:/media/users/company/","/mnt/companybckall","company2")
sync("192.168.10.8:/media/company/","/mnt/companybckall","company3")
elif bkp == 2:
#A to B
sync("/mnt/comanybckall/","192.168.10.8:/mnt/companybckall","company")
sync("/mnt/company1bckall/","192.168.10.8:/mnt/company1bckall","company1")
sync("/mnt/company2bckall/","192.168.10.8:/mnt/company2bckall","company2")
sync("/mnt/company3bckall/","192.168.10.8:/mnt/company3bckall","company3")
def sync(sources, destins, logs):
fecha = datetime.date.today()
fechastr = fecha.strftime("%Y-%m-%d")
lognom = destins + "/" + fechastr + "-" + logs + ".log"
logerror = destins + "/" + fechastr + "-" + logs + "err" + ".log"
rsync = "rsync"
# the arguments of the ssh must be in this way to work with crontab :)
argum = "-agEvvz --exclude-from=/root/excluir -e \"ssh -i /home/peter/.ssh/id_rsa\""
cmd = "%s %s %s %s" % (rsync, argum, sources, destins)
while True:
ret = call(cmd, shell=True, stdout=open(lognom, "a+"), stderr=open(logerror, "a+"))
if ret != 0:
time.sleep(30)
else:
sys.exit(0)
if __name__ == "__main__":
bkp()
this is just a basic use
No comments:
Post a Comment