Secure Tarfile library
It's a streaming wrapper around python tarfile and allow secure handling files and support encryption.
from securetar import SecureTarFile, atomic_contents_add
from pathlib import Path
path_to_add = Path(".")
with SecureTarFile("test.tar", "w") as tar_file:
atomic_contents_add(
tar_file,
path_to_add,
file_filter=lambda _: False,
arcname=".",
)
with SecureTarFile("test.tar", "w", b"AES128_KEY_SIZE") as tar_file:
atomic_contents_add(
tar_file,
path_to_add,
file_filter=lambda _: False,
arcname=".",
)
A common pattern is to create an outer uncompressed tarfile that contains a variety of inner tar files. This can be accomplished without writing out multiple files with the following pattern.
from securetar import SecureTarFile, atomic_contents_add
from pathlib import Path
path_1 = Path("path1")
path_2 = Path("path2")
outer_secure_tar_file = SecureTarFile("pkg.tar", "w", gzip=False)
with outer_secure_tar_file as outer_tar_file:
with outer_secure_tar_file.create_inner_tar(
"./backup1.tar.gz", gzip=True
) as inner_tar_file:
atomic_contents_add(
inner_tar_file,
path_1,
file_filter=lambda _: False,
arcname=".",
)
with outer_secure_tar_file.create_inner_tar(
"./backup2.tar.gz", gzip=True
) as inner_tar_file:
atomic_contents_add(
inner_tar_file,
path_2,
file_filter=lambda _: False,
arcname=".",
)