# -*- coding: utf-8 -*- """ """ import gzip import tarfile from base64 import b64encode from hashlib import sha256 from os import unlink from pathlib import Path from subprocess import Popen, PIPE from time import sleep from typing import cast, IO dir0 = Path("/tmp/a") dir0.mkdir(parents=True, exist_ok=True) fil0 = dir0 / "eph0" fil0.write_text("Text 0", encoding="UTF-8") fil1 = dir0 / "eph1" fil1.write_text("Text 1", encoding="UTF-8") fil2 = dir0 / "eph2" fil2.write_text("Text 2", encoding="UTF-8") # Python # for comp in ["gz", "bz2", "xz"]: # print(f" # {comp}") # tgz = f"/tmp/py.{comp}" # with tarfile.open(tgz, f"w:{comp}") as tar_obj: # tar_obj.add("/tmp/a", arcname="a") # print(Popen(f"sha256sum {tgz}", shell=True, stdout=PIPE).stdout.read()) # with open(tgz, "rb") as tar_obj: # base64 = str(b64encode(tar_obj.read()), "UTF-8").encode("UTF-8") # print(sha256(base64).hexdigest()) # sleep(5) # unlink(tgz) # tgz = f"/tmp/py.{comp}" # with tarfile.open(tgz, f"w:{comp}") as tar_obj: # tar_obj.add("/tmp/a", arcname="a") # print(Popen(f"sha256sum {tgz}", shell=True, stdout=PIPE).stdout.read()) # with open(tgz, "rb") as tar_obj: # base64 = str(b64encode(tar_obj.read()), "UTF-8").encode("UTF-8") # print(sha256(base64).hexdigest()) # print("") # Python - gzip mtime = 1609459200 file_gzip = "/tmp/py_gzip.tgz" with cast(IO[bytes], gzip.GzipFile(file_gzip, mode='wb', mtime=mtime)) as cast_gzip: with tarfile.TarFile("a.tar", mode='w', fileobj=cast_gzip) as tar_obj: tar_obj.add("/tmp/a", arcname="a") out = Popen(f"sha256sum {file_gzip}", shell=True, stdout=PIPE).stdout.read() print(out) sleep(5) unlink(file_gzip) file_gzip = "/tmp/py_gzip.tgz" with cast(IO[bytes], gzip.GzipFile(file_gzip, mode='wb', mtime=mtime)) as cast_gzip: with tarfile.TarFile("a.tar", mode='w', fileobj=cast_gzip) as tar_obj: tar_obj.add("/tmp/a", arcname="a") out = Popen(f"sha256sum {file_gzip}", shell=True, stdout=PIPE).stdout.read() print(out) # CMD - tar # tgz = "/tmp/tar_a0.tgz" # _ = Popen(f"tar czf {tgz} /tmp/a", shell=True, stderr=PIPE, stdout=PIPE) # out = Popen(f"sha256sum {tgz}", shell=True, stdout=PIPE).stdout.read() # print(out) # sleep(5) # tgz = "/tmp/tar_a1.tgz" # _ = Popen(f"tar czf {tgz} /tmp/a", shell=True, stderr=PIPE, stdout=PIPE) # out = Popen(f"sha256sum {tgz}", shell=True, stdout=PIPE).stdout.read() # print(out) # CMD - gzip # tgz = "/tmp/gzp_a0.tgz" # _ = Popen(f"tar -c /tmp/a | gzip -n >{tgz}", shell=True, stderr=PIPE, stdout=PIPE) # out = Popen(f"sha256sum {tgz}", shell=True, stdout=PIPE).stdout.read() # print(out) # sleep(5) # tgz = "/tmp/gzp_a1.tgz" # _ = Popen(f"tar -c /tmp/a | gzip -n >{tgz}", shell=True, stderr=PIPE, stdout=PIPE) # out = Popen(f"sha256sum {tgz}", shell=True, stdout=PIPE).stdout.read() # print(out)