Bash 不同批次的Zip目录
我正试图压缩一个包含大量图片的目录,这些图片将被输入到一个深度学习系统中。这非常耗时,因此我想使用Bash 不同批次的Zip目录,bash,shell,zip,Bash,Shell,Zip,我正试图压缩一个包含大量图片的目录,这些图片将被输入到一个深度学习系统中。这非常耗时,因此我想使用Ctrl+C提前停止压缩过程,并将目录压缩成不同的“批” 目前我使用的是zip-r9v folder.zip folder,我发现-u选项允许更新更改的文件和添加新文件 如果我用Ctrl+C终止进程,我担心某些文件或zip本身会损坏。据我所知,cp可以安全终止,并建议gzip也是安全的 总而言之:过早结束zip命令安全吗?-u选项是否适用于不同批次的压缩 提前结束zip命令安全吗 在我的测试中,使用
Ctrl+C
提前停止压缩过程,并将目录压缩成不同的“批”
目前我使用的是zip-r9v folder.zip folder
,我发现-u
选项允许更新更改的文件和添加新文件
如果我用Ctrl+C
终止进程,我担心某些文件或zip本身会损坏。据我所知,cp
可以安全终止,并建议gzip
也是安全的
总而言之:过早结束zip
命令安全吗?-u
选项是否适用于不同批次的压缩
提前结束zip命令安全吗
在我的测试中,使用CtrlC取消zip
(InfoZip,2008年6月16日(v3.0))根本没有创建zip存档,即使已经压缩的数据是2.5GB。因此,我会说CtrlC是“安全的”(你不会得到一个损坏的文件,但也毫无意义(你做了所有的工作都是徒劳的)
u选项是否适用于不同批次的压缩
是的。Zip归档文件会单独压缩每个文件,因此您以后添加文件时获得的归档文件与在一次运行中添加所有文件一样好。请记住启动Zip
也需要时间。因此,请将批处理大小设置为可接受的最大值以节省时间
下面是一个脚本,它可以将您的所有文件添加到zip存档中,但每100个文件都有机会停止压缩
#! /bin/bash
batchsize=100
shopt -s globstar
files=(folder/**)
echo "Press enter to stop compression after this batch."
for ((startfile=0; startfile<"${#files[@]}"; startfile+=batchsize)); do
((startfile==0)) && u= || u=u
zip "-r9v$u" folder.zip "${files[@]:startfile:batchsize}"
u=u
if read -t 0; then
echo "Compression stopped before file $startfile."
echo "Re-run this script with startfile=$startfile to continue".
exit
fi
done
!/bin/bash
批量大小=100
shopt-s环球之星
文件=(文件夹/**)
echo“此批处理后按enter键停止压缩。”
为了((startfile=0;startfilezip
甚至对图像有回报吗?尤其是zip-9
对于这些输入数据来说似乎是浪费时间。我对shell脚本不太在行,所以非常感谢您提供的代码,这将非常有帮助。关于评论:您有一点,我将探索不同的选项,并尝试在脚本中使用它们。