split命令拆分大文件、cat合并

前言

在一些场景下上传大文件我们可能需要将大文件拆分为多个小文件,比如在百度网盘上传一个20G的文件,由于文件大小有限制,所以需要将大文件拆分为多个小文件。一些常用的压缩命令有下面这么几种。

Windows下使用7z工具压缩文件,设置分卷大小,文件拆分为多个小文件,每个小文件名为:文件名.7z.001、文件名.7z.002这样命名;
Linux下使用7-zip工具,其实是使用7za命令压缩包并分卷,文件拆分为多个小文件,每个小文件名为:文件名.7z.001、文件名.7z.002这样命名;

Linux环境下,split命令将文件拆分为多个小文件,每个小文件名为:前缀名+aa、前缀名+ab、前缀名+ac这样命名。

split命令

语法: split [OPTION]... [INPUT [PREFIX]],PREFIX 是拆分后的文件前缀,不写则默认是’x’
常用参数:

-b, --bytes=SIZE		#指定拆分文件大小,单位K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB

示例:

# -b 指定以2G的大小进行拆分文件 my_project_files.tar是文件名,my_project_files.tar.是拆分后文件前缀
# 拆分后每个小文件名为:前缀名+aa、前缀名+ab、前缀名+ac这样命名
[root@localhost test]# split -b 2G my_project_files.tar  my_project_files.tar.
[root@localhost test]# ll
total 22152428
-rw-r--r-- 1 root root 11342028800 Feb 14 14:51 my_project_files.tar
-rw-r--r-- 1 root root  2147483648 Feb 14 15:01 my_project_files.tar.aa
-rw-r--r-- 1 root root  2147483648 Feb 14 15:01 my_project_files.tar.ab
-rw-r--r-- 1 root root  2147483648 Feb 14 15:01 my_project_files.tar.ac
-rw-r--r-- 1 root root  2147483648 Feb 14 15:01 my_project_files.tar.ad
-rw-r--r-- 1 root root  2147483648 Feb 14 15:02 my_project_files.tar.ae
-rw-r--r-- 1 root root   604610560 Feb 14 15:02 my_project_files.tar.af
[root@localhost test]# ll -h
total 22G
-rw-r--r-- 1 root root  11G Feb 14 14:51 my_project_files.tar
-rw-r--r-- 1 root root 2.0G Feb 14 15:01 my_project_files.tar.aa
-rw-r--r-- 1 root root 2.0G Feb 14 15:01 my_project_files.tar.ab
-rw-r--r-- 1 root root 2.0G Feb 14 15:01 my_project_files.tar.ac
-rw-r--r-- 1 root root 2.0G Feb 14 15:01 my_project_files.tar.ad
-rw-r--r-- 1 root root 2.0G Feb 14 15:02 my_project_files.tar.ae
-rw-r--r-- 1 root root 577M Feb 14 15:02 my_project_files.tar.af
[root@localhost test]# 

cat命令合并

使用cat命令进行合并文件: cat 拆分后全部文件 > 文件名

# cat 拆分后全部文件 > 文件名
[root@localhost test]# cat my_project_files.tar.a* > my_project.tar
[root@localhost test]# ll 
total 33228632
-rw-r--r-- 1 root root 11342028800 Feb 14 14:51 my_project_files.tar
-rw-r--r-- 1 root root  2147483648 Feb 14 15:01 my_project_files.tar.aa
-rw-r--r-- 1 root root  2147483648 Feb 14 15:01 my_project_files.tar.ab
-rw-r--r-- 1 root root  2147483648 Feb 14 15:01 my_project_files.tar.ac
-rw-r--r-- 1 root root  2147483648 Feb 14 15:01 my_project_files.tar.ad
-rw-r--r-- 1 root root  2147483648 Feb 14 15:02 my_project_files.tar.ae
-rw-r--r-- 1 root root   604610560 Feb 14 15:02 my_project_files.tar.af
-rw-r--r-- 1 root root 11342028800 Feb 14 15:34 my_project.tar

#核对一下原文件与和合并后文件的MD5值是否一致
[root@localhost test]# md5sum my_project_files.tar ; md5sum my_project.tar
03694e3313ae1109d7980b20ee9c396a  my_project_files.tar
03694e3313ae1109d7980b20ee9c396a  my_project.tar
[root@localhost test]# 

Windows 7-zip工具、Linux 下7za命令

Windows下直接选择文件,鼠标右键,选择7-zip工具,添加到压缩包,设置分卷大小即可:
在这里插入图片描述
解压也很简单,同时选择test.7z.001、test.7z.002、test.7z.003文件,鼠标右键,选择7-zip工具,提取到当前位置即可。

Linux下使用7-zip工具,命令叫做7za,下面使用centos操作系统进行演示:

# 7za命令压缩包并分卷
yum install -y epel-release  && yum install -y p7zip 	#没有7za命令的话需要先按epel源在安装p7zip
7za a -r -t7z -v2G test.7z test/						#使用7za命令压缩test目录
# 参数解读
a 表示添加文件或文件夹到压缩包
-r 表示递归所有的子文件夹
-t7z 表示压缩格式是7z,不写默认压缩格式也是7z
test.7z 是压缩后的压缩包名
test/ 要压缩的目标文件目录

#压缩完成之后会得到好几个文件
test.7z.001
test.7z.002
test.7z.003


# 要先使用cat命令合并再解压,注意要cat全部的压缩包,不要漏了
cat test.7z.00* > test.7z 
#没有7za命令的话需要先按epel源在安装p7zip
yum install -y epel-release  && yum install -y p7zip 
#x表示解压,-r表示递归,-o表示解压到的位置,-o后面没有空格。/test表示解压指定输出到/test目录
7za x -r test.7z -o/test/

当然可以,在Windows下使用7-zip工具压缩分卷,然后在Linux使用7za命令进行合并,解压。

Windows zip工具、Linux 下zip命令(失败,Linux下分卷后合并解压一直报错)

Windows下直接选择文件,鼠标右键,选择zip工具,添加到压缩包,设置分卷大小即可,步骤和上面的7-zip工具用法一样,这里不在截图演示。
解压也很简单,同时选择test.zip.001、test.zip.002、test.zip.003文件,鼠标右键,选择zip工具,提取到当前位置即可。

Linux下使用zip压缩、unzip解压:

#没有命令的话先安装压缩解压命令
yum install zip unzip -y

#正常的压缩,没有分卷,-r表示递归目录,test.zip是压缩后包名,test/是要压缩的目录
zip -r test.zip test/
#unzip解压,-d指定解压到某个目录
unzip test.zip -d /test/

# 压缩分卷方法一、
#压缩并分卷,-s 10M表示指定每个小压缩包是10M,压缩后得到了test.zip、test.z01、test.z02、test.z03
zip -s 10M -r test.zip test/
[root@master zip]# ll -rth
总用量 41M
drwx------ 5 root root   45 323 14:25 test
-rw-r--r-- 1 root root  10M 324 16:41 test.z01
-rw-r--r-- 1 root root  10M 324 16:41 test.z02
-rw-r--r-- 1 root root  10M 324 16:41 test.z04
-rw-r--r-- 1 root root 298K 324 16:41 test.zip
-rw-r--r-- 1 root root  10M 324 16:41 test.z03
#如果是分卷了,需要使用cat命令先合并,再解压
cat test.z* > test1111.zip			#输出文件自己命名,不要写test.zip,会报错cat: test.zip:输入文件是输出文件
unzip test.zip -d /test/			#报错了



失败,Linux下分卷后合并解压一直报错
失败,Linux下分卷后合并解压一直报错
失败,Linux下分卷后合并解压一直报错
失败,Linux下分卷后合并解压一直报错
失败,Linux下分卷后合并解压一直报错
失败,Linux下分卷后合并解压一直报错


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值