前言
在一些场景下上传大文件我们可能需要将大文件拆分为多个小文件,比如在百度网盘上传一个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 3月 23 14:25 test
-rw-r--r-- 1 root root 10M 3月 24 16:41 test.z01
-rw-r--r-- 1 root root 10M 3月 24 16:41 test.z02
-rw-r--r-- 1 root root 10M 3月 24 16:41 test.z04
-rw-r--r-- 1 root root 298K 3月 24 16:41 test.zip
-rw-r--r-- 1 root root 10M 3月 24 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下分卷后合并解压一直报错