返回顶部

我的蜡笔丢了

  博客园  :: 首页  :: 新随笔  ::  :: 订阅 订阅  :: 管理

背景介绍

  当某个文件要上传到服务器的时候,通过上传有大小限制,如果文件大于某个指定值的时候,需要对文件进行分卷压缩,上传完之后再汇总解压,以达到上传目的。

涉及操作

  • awk 文件操作命令
  • tar 文件压缩解压缩命令
  • split 文件分割命令
  • curl 这里是用curl进行上传的

 代码

文件上传

#!/bin/bash

#脚本所在路径  这里待上传文件也和脚本同目录
filePath=`pwd`
#进去到该路径
cd $filePath
#要上传的文件名 通过传参形式加载
fileName=$1
#待上传的文件大小
fileSize=`ls -l $fileName |awk '{print $5}'`
#上传文件的大小限制,这里是50M
maxSize=$((1024*50))
#分卷解压的目标名称 这里是“源文件名称_”
targetFileName="$fileName"_
#判断符 
flag=0

#如果文件大小大于指定大小 进行分卷压缩 文件名为源文件名称_00、源文件名称_01...
if [ $fileSize -gt $maxSize ] ;then
     tar cvzf - $fileName |split -d -b 50m - "$targetFileName"
     flag=1
fi
#如果等于1 说明文件已经分卷压缩过,将分卷的名称重赋值 否则还是原来的文件名
if [ $flag -eq 1 ] ;then
    targetFileName=`ls|grep "$targetFileName"`
else
    targetFileName=$fileName
fi

#遍历上传目标文件
for  i in $targetFileName; 
do 
    #这里是采用curl进行上传文件
    curl -F "upFile=@$i" https://ip/upload -k
done

文件上传后操作

 上传文件后,如果文件小于指定值,还是原来的文件,但是如果文件大于指定值,那么文件会被切割成分卷文件。这里采用重定向进行汇总,然后通过tar进行解压,得到原来的文件.

#将几个分卷文件汇总到一起
cat fileName_* > fileName
#然后解压
tar -zxvf fileName

示例:

假设我有文件jprofiler_linux_11_1_3.tar.gz

现在分卷后的情况如下:

 

然后通过cat进行重定向

cat jprofiler_linux_11_1_3.tar.gz_0* > jprofiler_linux_11_1_3.tar.gz

由于和原来文件重名,会替换原来的文件

 

但这里的文件是压缩文件,需要解压后才能得到原来的文件

tar -zxvf jprofiler_linux_11_1_3.tar.gz 

 

posted on 2020-10-26 13:35  我的蜡笔丢了  阅读(584)  评论(0)    收藏  举报