Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import shutil
- from datetime import datetime
- import sys
- import os
- from os.path import isfile, join
- import time
- os.system("cls||clear")
- print("\n[ Running Home Assistant Backup ... ]")
- # function(s)
- def create_logfile():
- if not os.path.exists("script_run.log"):
- x = "FILENAME{}|".format(" " * 16)
- x += " SIZE{}|".format(" " * 12)
- x += " SCRIPT START{}|".format(" " * 28)
- x += " SCRIPT END{}|".format(" " * 30)
- x += " TOTAL RUNTIME"
- y = "\n{}".format("=" * 141)
- log = open("script_run.log", "w")
- log.write(x)
- log.write(y)
- log.close()
- t = open("targets.config", "r")
- lines = t.readlines()
- t.close()
- for line in lines:
- # Create variables
- script_start_time = time.time()
- script_start_date = datetime.now().strftime("%A %B %d, %Y @ %I:%M %p")
- target_elements = line.split(",")
- dir_name = r"{}".format(target_elements[0].strip())
- bu_dir = r"{}".format(target_elements[1].strip())
- prefix = r"{}".format(target_elements[2].strip())
- files2keep = int(target_elements[3].strip())
- date = datetime.now().strftime("%Y%m%d%H%M%S")
- output_filename = r"{}\{}{}".format(bu_dir, prefix, date)
- # Create backup
- shutil.make_archive(output_filename, 'zip', dir_name)
- # Get list of existing backups
- files = [f for f in os.listdir(bu_dir) if isfile(join(bu_dir, f))]
- # Arrange all existing files in array from newest to oldest
- file_list = []
- for file in files:
- file_list.append(file[0:-4])
- file_list.sort(reverse=True)
- # Remove older files
- i = 1
- for item in file_list:
- if (i > int(files2keep)) and ("original" not in item):
- os.remove("{}\{}.zip".format(bu_dir, item))
- i += 1
- # Create script output variables
- script_end_time = time.time()
- script_end_date = datetime.now().strftime("%A %B %d, %Y @ %I:%M %p")
- runtime = script_end_time - script_start_time
- size = "{} KB".format(round(os.path.getsize(output_filename + ".zip") / 1024))
- # Create logfile entry
- create_logfile()
- # This dictionary is used for formatting the log output
- filename = "{}{}.zip".format(prefix, date)
- info_dict = {
- filename: 24,
- size: 16,
- script_start_date: 40,
- script_end_date: 40
- }
- # Write output to logfile
- log = open("script_run.log", "a")
- output_str = "\n"
- for key, length in info_dict.items():
- output_str += "{}{}| ".format(key, " " * (length - len(key)))
- output_str += "{} seconds".format(round(runtime))
- log.write(output_str)
- log.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement