Beispiel #1
0
def get_prev_meta() -> Optional[Tuple[Metadata, str]]:
    backup_meta_list = list(
        filter(
            lambda path: os.path.isfile(path) and re.fullmatch(
                r"backup(-full)?-\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.tar(\.xz|\.gz|\.bz2)?\.meta\.gpg",
                os.path.basename(path)), os.listdir(opt.output_dir)))

    if len(backup_meta_list) == 0:
        return None

    for backup in backup_meta_list:
        if not os.path.isfile(backup.replace(".meta", "")):
            raise ValueError(
                f"Backup metadata '{backup}' does not have corresponding backup '{backup.replace('.meta', '')}' associated with it."
            )

    fname = reduce(lambda a, c: a if a > c else c, backup_meta_list)

    data = gpgcrypto.decrypt(fname).data.decode()
    return Metadata.deserialize(data), fname