解压缩操作需要几个小时

unzip operation taking several hours

我正在使用以下 shell 脚本循环播放 90 个 zip 文件并将它们解压缩到由 Hostinger(共享网络托管)托管的 Linux 盒子上

#!/bin/bash

SOURCE_DIR="<path_to_archives>"

cd ${SOURCE_DIR}

for f in *.zip
do
#   unzip -oqq "$f" -d "${f%.zip}" &
    python3 scripts/extract_archives.py "${f}" &
done
wait

上面shell脚本调用的python脚本如下-

import shutil
import sys

source_path = "<path to source dir>"

def extract_files(in_file):
    shutil.unpack_archive(source_path + in_file, source_path + in_file.split('.')[0])
    print('Extracted : ', in_file)


extract_files(sys.argv[1].strip())

无论我使用内置的 unzip 命令还是 python,解压所有文件大约需要 2.5 小时。解压缩所有 zip 文件会产生 90 个文件夹,总共有 170000 个文件。我认为 15/20 分钟之间的任何时间都是合理可接受的时间范围。

我已经尝试了几种不同的变体,我试过只 tar 环文件夹而不是将它们压缩,认为不 tar 环可能比解压缩更快。我已经使用来自源服务器的 tar 命令通过 ssh 和 untar 在内存中传输文件,就像这样 -

time tar zcf - . | ssh -p <port> user@host "tar xzf - -C <dest dir>"

没有任何帮助。如果需要加快速度,我愿意使用任何其他编程语言,如 Perl、Go 或其他语言。

请有人帮我解决这个性能问题。

谢谢大家的回答。正如您所指出的,这与托管环境中的服务器节流有关