2017-04-18 19 views
0

サイズが2.4 Gbの画像を含むフォルダがあります。複数の独立した独立したzipアーカイブに大きなフォルダ(2.4 gb)をアーカイブする方法

このタスクは、このフォルダを複数の独立した独立したzipアーカイブにアーカイブすることです。

私が試してみました:

zip -r -s 512m archive.zip folder 

をこのコマンドは、依存ジップアーカイブを作成します。

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

しかし、私は、画像を最適化し、「オンラインWebサービス」のために、正確に独立したジップアーカイブを作成する必要があります。このサービスには、ジップアーカイブと最大2Gbのサイズが必要です。

解決策をお聞かせください。

OS:Linuxの

アクセス経由:ヘルプのためのSSH

感謝。

答えて

0

ここでトリックを行いますbashで短いスクリプトは次のとおりです。MAX_SIZEあなたはfindかのリストを提供します何か他のものとの「FILES」でコマンドを置き換えることができ MB単位で設定されている

#!/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 

ファイル

0

the.Legend、スクリプトのおかげで。

ここ

あるいくつかの注意事項:1 Mbの少ないし、サイズを持つファイルを

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

1を返します。

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

Linuxのbashでは動作しません。

#!/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 

結果は次のとおりです:

http://example.com/example.com.image_1.zip [500Mb] 
http://example.com/example.com.image_2.zip [500Mb] 
http://example.com/example.com.image_3.zip [500Mb] 
http://example.com/example.com.image_4.zip [227Mb] 
ここ

は、Linuxでテストされたスクリプトを更新しています
関連する問題