背景介绍
当某个文件要上传到服务器的时候,通过上传有大小限制,如果文件大于某个指定值的时候,需要对文件进行分卷压缩,上传完之后再汇总解压,以达到上传目的。
涉及操作
- 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

本文仅作为笔记使用,方便以后查询,可读性可能不是很好,记录信息大部分来自网上
浙公网安备 33010602011771号