美文网首页unix系统相关
AIX下使用zip+split实现分卷压缩

AIX下使用zip+split实现分卷压缩

作者: bluexiii | 来源:发表于2016-12-13 10:26 被阅读671次

    场景

    与某第三方厂商使用文件接口传递数据。我们是发送方,对方是接收方,对方的接口规范要求对于大于500M文件,必须使用zip格式分卷压缩。
    本来在linux下使用zip分卷压缩轻而易举,直接调用系统的zip命令,加上-b参数即可,但恰巧我们的接口机是台IBM小机,AIX系统下的zip不支持分卷功能,需要与split命令结合实现分卷功能。

    实现方案

    1. 先使用zip命令将目录打包成单独的zip文件
    2. 使用split命令将zip文件拆分
    3. 对于拆分出来的散乱文件,按格式要求批量重命名

    格式要求

    生成的文件名格式如下:
    yyyymmdd_zzzz_RetentionPhotosSync_iiii_xxxx.zip
    其中yyyymmdd为时间,xxxx为分卷序列号

    分卷压缩脚本

    下面以名为testfolder的目录为例,以5M大小,进行分卷

    使用zip命令,将整个目录压缩成.zip(对于目录需要使用-r参数)

    zip -r tmpfile.zip testfolder
    

    使用split命令,以5M为单位,将.zip进行拆分,生成xaa、xab、xac...(以此类推)等多个文件

    split -b 5m tmpfile.zip splitfile-
    

    对于生成的xaa、xab、xac...散乱文件,按格式重命名

    nowdate=`date +%Y%m%d`;n=0; for filename in `ls splitfile* `; do n=`expr ${n} + 1`; suffix=`printf %04d ${n}`; mv ${filename} ${nowdate}_zzzz_RetentionPhotosSync_iiii_${suffix}.zip ; done
    

    清理临时文件

    rm tmpfile.zip
    

    分卷解压脚本

    如果对端恰巧也是AIX系统,可以用如下方式解压缩

    使用cat命令合并文件

    cat yyyymmdd_zzzz_RetentionPhotosSync_iiii_*.zip > yyyymmdd_zzzz_RetentionPhotosSync_iiii.zip
    

    使用unzip命令解压

    unzip yyyymmdd_zzzz_RetentionPhotosSync_iiii.zip
    

    相关文章

      网友评论

        本文标题:AIX下使用zip+split实现分卷压缩

        本文链接:https://www.haomeiwen.com/subject/hfwvmttx.html