如何将大文件夹(2.4 gb)存档到多个独立的独立zip存档

时间:2017-04-18 15:34:23

标签: linux ssh zip

有一个文件夹,其大小为2.4 Gb。

任务是通过SSH将此文件夹存档到多个独立的独立zip存档。

我试过了:

zip -r -s 512m archive.zip folder

此命令创建相关的zip-archives:

archive.z01
archive.z02
archive.z03
archive.z04
archive.zip

但我需要为"在线网络服务"创建完全独立的zip存档。这可以优化图像。此服务需要zip存档,大小最高为2Gb。

你能建议一个有效的解决方案吗?

操作系统:Linux

通过以下方式访问:SSH

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这是一个bash中的一个简短脚本,可以解决这个问题:

#!/bin/bash

FILES=`ls *.jpg`

ZIP_PREFIX='archive'
INDEX='1'

MAX_SIZE='512'

for PICT_FILE in $FILES
do
    ZIP_NAME=${ZIP_PREFIX}"_"${INDEX}".zip"
    ARCH_SIZE=`du -m $ZIP_NAME | cut -f 1`


    if [  $ARCH_SIZE -ge $MAX_SIZE  ]; then
            INDEX=`echo "$INDEX + 1" | bc`
    fi

    ZIP_NAME=${ZIP_PREFIX}"_"${INDEX}".zip"

    zip $ZIP_NAME $PICT_FILE

done 

MAX_SIZE在Mb中设置 您可以在' FILES'中替换命令。使用find或其他任何可以提供文件列表的内容

答案 1 :(得分:0)

the.Legend,谢谢你的剧本。

这里有一些注意事项:

<script type="text/javascript" src="<?=base_url()?>js/jquery-161.js"></script>
<script src="<?=base_url()?>js/jquery.min-2.0.2.js"></script>
<link href="<?=base_url()?>/css/select2.min.css" rel="stylesheet" />
<script src="<?=base_url()?>js/select2.min.js"></script>

对于大小小于1 Mb的文件,返回1。

1. `du -m $ZIP_NAME | cut -f 1`

在linux中使用bash不起作用。

这是在linux中测试的更新脚本:

2. INDEX=`echo "$INDEX + 1" | bc

结果是:

#!/bin/bash

FILES=`find ./image/`

ZIP_PREFIX='example.com.image'
INDEX='1'

MAX_SIZE='512000' # 512 Mb

for PICT_FILE in $FILES
do
    ZIP_NAME=${ZIP_PREFIX}"_"${INDEX}".zip"
    ARCH_SIZE=`du -k $ZIP_NAME | cut -f 1`

    # echo $ARCH_SIZE
    # echo $MAX_SIZE

    if [  $ARCH_SIZE -ge $MAX_SIZE  ]; then
            INDEX=$((INDEX + 1))
    fi

    ZIP_NAME=${ZIP_PREFIX}"_"${INDEX}".zip"

    zip $ZIP_NAME $PICT_FILE

done