解压缩操作需要几个小时
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 或其他语言。
请有人帮我解决这个性能问题。
谢谢大家的回答。正如您所指出的,这与托管环境中的服务器节流有关
我正在使用以下 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 或其他语言。
请有人帮我解决这个性能问题。
谢谢大家的回答。正如您所指出的,这与托管环境中的服务器节流有关