Improving backup efficiency with shutil

Removed the old backup code that created a zip on a file-by-file basis and replaced it with make_archive from shutil to just zip the whole directory
This commit is contained in:
Scott R 2021-08-13 19:45:15 -05:00
parent 0689b735ff
commit 5c85a575ee
2 changed files with 5 additions and 11 deletions

View File

@ -553,13 +553,4 @@ class Helpers:
return json.loads(content) return json.loads(content)
@staticmethod helper = Helpers()
def zip_directory(file, path, compression=zipfile.ZIP_LZMA):
with zipfile.ZipFile(file, 'w', compression) as zf:
for root, dirs, files in os.walk(path):
for file in files:
zf.write(os.path.join(root, file),
os.path.relpath(os.path.join(root, file),
os.path.join(path, '..')))
helper = Helpers()

View File

@ -10,6 +10,8 @@ import threading
import schedule import schedule
import logging.config import logging.config
import zipfile import zipfile
import shutil
import zlib
from app.classes.shared.helpers import helper from app.classes.shared.helpers import helper
@ -324,7 +326,8 @@ class Server:
try: try:
backup_filename = "{}/{}.zip".format(conf['backup_path'], datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')) backup_filename = "{}/{}.zip".format(conf['backup_path'], datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
logger.info("Creating backup of server '{}' (ID#{}) at '{}'".format(self.settings['server_name'], self.server_id, backup_filename)) logger.info("Creating backup of server '{}' (ID#{}) at '{}'".format(self.settings['server_name'], self.server_id, backup_filename))
helper.zip_directory(backup_filename, self.server_path) # helper.zip_directory(backup_filename, self.server_path)
shutil.make_archive(backup_filename, zip, self.server_path)
backup_list = self.list_backups() backup_list = self.list_backups()
if len(self.list_backups()) > conf["max_backups"]: if len(self.list_backups()) > conf["max_backups"]:
oldfile = backup_list[0] oldfile = backup_list[0]