多语言展示
当前在线:1583今日阅读:165今日分享:48

tar打包split分割分解拆分大包文件

tar打包split分割分解拆分大包文件,在工作中遇到一个任务,要求将录音文件打包并上传,单个上传文件最大1G,考虑后使用tar + split 实现。注:本次打包由于文件个数较多,使用 tar --files-from 参数。
方法/步骤
1

1、将需要打包的文件生成到列表文件,tar 时用于--files-from 参数。find 路劲 -type f -name '*2*.mp3' > 路劲/列表文件名.list

2

2、使用tar 打包并分片 参数说明:-b 大小 -d 使用数字后缀 -a 后缀长度。详细split参数说明见下图:tar -zcf - --files-from 路劲/列表文件名.list | split -b 1024m -d -a 4 - 分片文件名.gz.

3

3、测试打包文件是否能正常解压。cat 分片文件名.gz* | tar -xzv

4

4、完成后具体脚本部分展示。log 'start 开始生成${putDay} 日 list文件'find ${baseData}/${putDay:0:4}/${putDay:4:2} -type f -name '*${putDay}*.mp3' > ${baseDataGz}/LIST_CRMSEND_4001_991_00_${putDay}_${retransmissionNumber}.listlog 'end list文件生成结束' log '根据生成的list文件将文件打包并拆分成500m大小'log 'start 开始生成${putDay} 日 gz文件'tar -zcf - --files-from ${baseDataGz}/LIST_CRMSEND_4001_991_00_${putDay}_${retransmissionNumber}.list | split -b 500m -d -a 4 - ${baseDataGz}/CRMSEND_4001_991_00_${putDay}_${retransmissionNumber}.gz.log '查看生成文件'ls ${baseDataGz}/CRMSEND_4001_991_00_${putDay}_${retransmissionNumber}.gz*log 'end gz文件生成结束'log 'start 生成清单汇总文件' find ${baseDataGz} -type f -name 'CRMSEND_4001_991_00_${putDay}_${retransmissionNumber}.gz*' | sed 's/\/data\/ucp\/record\/ftpCrmsendGz\///g' >${baseDataGz}/CRMSEND_4001_991_00_${putDay}_${retransmissionNumber}log 'end 清单汇总文件生成结束'

注意事项

注意tar打包时命令中的空格

推荐信息