代码之家  ›  专栏  ›  技术社区  ›  justinian482

在管道中获取md5sum

  •  1
  • justinian482  · 技术社区  · 3 年前

    我正在创建非常大的目录的存档,并将这些存档拆分为更小的部分,如下所示:

    tar -vcz target_dir | pigz > target_dir.tar.gz
    
    md5sum target_dir.tar.gz > md5sum.txt
    
    split -n 10 target_dir.tar.gz target_dir.tar.gz.part-
    

    这种方法的问题是,我基本上需要两倍于tar.gz文件的空间,这是有问题的,因为一些目标目录是巨大的(TB)。

    我可以用管道 tar 输出到 split 以减少所需的磁盘空间:

    tar -vcz target_dir | pigz | split -n 10 - target_dir.tar.gz.part-
    

    但是,在tar.gz文件进入之前,我该如何计算它的md5sum 分裂 ?

    1 回复  |  直到 3 年前
        1
  •  4
  •   KamilCuk    3 年前

    使用 tee 分流。使用bash进程替换使用来自临时fifo的输入来运行临时进程。

    tar -vcz target_dir |
        pigz |
        tee >(md5sum > md5sum.txt) |
        split -n 10 - target_dir.tar.gz.part-