From f33580bebc3c106e487c76c1029accd26bb3986a Mon Sep 17 00:00:00 2001 From: Raphael Roberts Date: Tue, 25 May 2021 23:29:21 -0500 Subject: [PATCH] Added backup path-name generation. --- openwrt_backup/utils.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/openwrt_backup/utils.py b/openwrt_backup/utils.py index ace94d7..203de94 100755 --- a/openwrt_backup/utils.py +++ b/openwrt_backup/utils.py @@ -1,3 +1,4 @@ +import datetime from pathlib import Path from subprocess import list2cmdline from typing import Union @@ -52,3 +53,21 @@ def exec_remote(client: paramiko.SSHClient, command: Union[str, list]): command = list2cmdline(command) stdin, stdout, stderr = client.exec_command(command) return stdout, stderr + + +def get_next_number(backup_path: Path, hostname): + f_names = (path.name for path in backup_path.glob("*.tar.gz")) + f_names_fields = map(lambda s: s.split("__"), f_names) + f_names_fields_filtered = filter( + lambda fields: fields[1] == hostname, f_names_fields + ) + try: + return max(int(fields[0]) for fields in f_names_fields_filtered) + 1 + except ValueError: + return 0 + + +def get_new_backup_filepath(backup_path: Path, time_format, hostname): + next_number = get_next_number(backup_path, hostname) + dt = datetime.datetime.today() + return backup_path / f"{next_number}__{hostname}__{dt.strftime(time_format)}.tar.gz"