dd tools(archives tool) 続き

前回より引き続きテストを続行、現在は各ボタンの挙動もほぼ問題ないレベルになっていると思います(ほぼです)。deComp Toolはunarとunpigzをひとつのボタンにして拡張子で判断するようにしました。
Compression ToolはParallel Implementation系をメインとしてatoolは控え選手とすることにします。カレントディレクトリ変更の際などリスタートするのは仕様です。

Archives deComp Tool


unarをデフォルトの展開ツールとしてunpigzをひとつのボタンにした
aunpack unpは取り敢えずそのまま
Compボタンは同じディレクトリでCompression Tool起動

unar + unpigz
pigzの展開コマンド(unpigz)はgzip zipの展開に対応、展開に関しては大幅な短縮は期待できませんが各コマンドに対して30%〜40%の展開時間短縮が見込めます。容量の大きいファイルについては一定のメリットがありますがアーカイブファイルは圧縮時同様工夫(tar)が必要になります。
unpigzは単一ファイルのみ実行させることにして拡張子だけでは判断できないzipはlsarを実行3行目にデータが無い場合単一ファイルとみなしてunpigzを実行します。
通常アーカイブファイル(gzip)は(“.tar.gz”)または(“.tgz”)になっていると思います。
変数aにはリストで選択したファイル(ディレクトリ)名が入っています。末尾7文字が(“.tar.gz”)ならunar、以下3文字(“.gz”)はunpigz、以外はunar
拡張子が(“.zip”)でlsarの出力がnotならunpigz、以外はunar
送り先のunar_click() unpigz_click()のselect_selection()はコメント

def unar_unpi_click():
    global mark
    b = ""
    select_selection()
    if mark == 1:
        return
    else:
        ext = a[-7:]
        if ext == ".tar.gz":
            unar_click()
        else:
            ext = a[-4:]
            if ext == ".zip":
                b = ("lsar " + a + " | awk 'NR==3'")
                b = (subprocess.Popen(b, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
                b = b.strip()
                if not b:
                    unpigz_click()
                else:
                    unar_click()
            else:
                ext = a[-3:]
                if ext == ".gz":
                    unpigz_click()
                else:
                    unar_click()

テスト

$ lsar moode-r721-iso.zip
moode-r721-iso.zip: Zip
moode-r721-iso.img


tar.gz
unar


img.gz
unpigz


zip
unpigz


zip
unpigz


zip
unar


7z
unar

Compression Tool


コマンドボタンはParallel Implementationをメインにしてapackボタンを1つ残しています。プログラムはそのままあるのでボタンプログラムのコメントを入れ替えるだけで変更可能
リストボックスはリンクファイル、実行ファイルを非表示にした
file_dir_list
— | grep -v ‘@$’ | grep -v ‘*$’ | sort”)

テスト
サイズの小さいアーカイブファイルでテスト deComp Toolで展開

unarからrarファイルOK

展開したディレクトリ(projects)を各形式で圧縮


pixxとapackの出力は同じファイル名になるのでリネーム


apackから実行した各コマンドはpixxより少し小さくなっています
pbzip2は差が大きかったので圧縮率(-6 から -9)に変更
xz 7z形式もある程度のサイズまでストレス無く圧縮できます

イメージファイル
旧バージョンになったmoode audio720をイメージファイルにした(moode720-210506.img)を圧縮


zipの13m25sに対してpigzは4m33sといい結果が出ています。
圧縮率
pigz -6
pixz -6
pbzip2 -9

Pi4のCPUパワーでは大きいサイズのファイル圧縮はpigzがベスト。
圧縮速度の兼ね合いになりますが一定サイズ以内であればpbzip2 pixzも充分メリットが得られると思います。

参考
dd_archives.py.20210623
dd_comp.py.20210623