Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 不同批次的Zip目录_Bash_Shell_Zip - Fatal编程技术网

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;startfile
zip
甚至对图像有回报吗?尤其是
zip-9
对于这些输入数据来说似乎是浪费时间。我对shell脚本不太在行,所以非常感谢您提供的代码,这将非常有帮助。关于评论:您有一点,我将探索不同的选项,并尝试在脚本中使用它们。