最近一直在做大数据下载和上传工作,其中比较麻烦的就是一个大文件经过分段下载以后如何确保其完整性。比如下载到一半断了,需要进行断点续传。比如上传过程中出现了问题,无法上传大文件,需要切成小份,上传以后在合并。
split切分文件
命令行split可以通过行数切分,也可以通过大小切分。如果用行数切分可以使用以下命令:
split -l50000 url.csv url.csv.x
如果使用大小切分,可以使用以下命令:
split -b5G books.tar.gz books.tar.gz.x #按照5G大小切分文件
cat books.tar.gz.x* > books.tar.gz #合并文件
MD5校验
md5sum 用于计算与校验RFC 1321所描述的128位MD5哈希值,此处MD5散列值(或校验和)作一个文件的数字指纹使用。对于多个文件的MD5生成,可以使用以下方式:
md5sum a.tar.gz b.tar.gz c.tar.gz >> md5sum.txt
压缩文件测试
如果上传和下载的压缩文件,也可以使用压缩文件测试。例如:
zip -T -P pswd a.zip #如果没有密码,可以不需要-P参数
unzip -t -P pswd a.zip #如果没有密码,可以不需要-P参数
7za t -p<pswd> a.zip #如果没有密码,可以不需要-p参数
这里建议使用7za,主要是在使用zip和unzip过程中,遇到过以下情况:
中文乱码问题
mismatching “local” filename …, continuing with “central” filename version,
网上搜了很多方案,但是都无法解决,包括使用-O指定编码,后者直接修改locale都无法避免。使用7za就没有这个问题了。
扫码联系船长