File: //opt/node_api/backup.hook_shared.v2
#!/usr/bin/python3
import os
import json
from operator import itemgetter
def progress():
try:
with open("/root/backup.conf/tmp/dir.list", 'r') as lv:
volume = lv.read().split()
if volume:
summ1 = len(volume)
last = volume[-1]
lv.close()
back_file = "/root/backup.conf/logs/backup_time.tmp"
with open(back_file, 'r') as bt:
status = bt.read().strip().split()[-3]
bt.close()
if last != status:
summ2 = sum(1 for line in open(back_file, 'r'))
ss = int(summ2) * 100 // int(summ1)
return ss
else:
return 100
except Exception as e:
pass
def top_dir():
try:
back_file = "/root/backup.conf/logs/backup_time.tmp"
with open(back_file, 'r') as bt:
status = bt.readlines()
sort = []
for l in status:
sort.append(l.split()[2])
s = []
top3 = sorted(sort, reverse=True)[0:3]
for i in status:
if i.split()[-1] in top3:
s.append((i.split()[0], i.split()[-1]))
slow = {}
for x, y in sorted(s, key=itemgetter(1), reverse=True):
slow[x] = y
return slow
except Exception as e:
pass
def backup_size():
stream = os.popen("mount | grep /backup | awk {'print$1'}")
output = stream.readlines()
if output:
stream = os.popen('df -h | grep ' + output[0].rstrip() + ' | awk {\'print$5\'}')
output = stream.readlines()
return output[0].rstrip()
def backup():
with open('/backup/backup.stat', 'r') as s:
output = s.readlines()[-1]
last_day = output[-3:].split()[0]
pr = progress()
if pr and pr >= 90:
result = [last_day, backup_size(), pr, top_dir()]
else:
result = [last_day, backup_size(), pr, {}]
print(json.dumps(result, indent=4))
if __name__=="__main__":
backup()