Linux中如何实现大文件分卷压缩和合并解压
简介
个别时候,当我们想上传文件时,可能因为文件太大,网速太慢等原因,导致上传失败。此时,我们必须将大文件分割成一些小文件,以便上传。
本文将介绍在Linux中,如何通过以下几种方法实现大文件的分卷压缩和合并解压:
方法一:tar
方法二:zip
方法三:7z
为方便演示,我们先使用以下命令,创建1个100M的文本大文件:
$ mkdir ./example-dir
$ base64 /dev/urandom | head -c 100M > ./example-dir/demo.txt
方法一:tar
分卷压缩
以下示例中,我们使用 tar
和 split
命令,将example-dir目录下的大文件,压缩并分割成了50M大小。
$ tar -zcf - ./example-dir/ | split -b 50m -d - demo.tar.gz.
检查压缩后的文件。
$ ls demo.tar.gz.00 demo.tar.gz.01 example-dir
合并解压
$ mkdir -p demo && cat demo.tar.gz.* | tar -xzv -C demo ./example-dir/ ./example-dir/demo.txt
检查解压后的文件。
$ tree ./demo ./demo └── example-dir └── demo.txt 1 directory, 1 file
方法二:zip
分卷压缩
我们将使用zip命令的-s(splitsize)选项,实现分卷压缩。
$ zip -r -s 50m demo.zip ./example-dir/ adding: example-dir/ (stored 0%) adding: example-dir/demo.txt (deflated 24%)
以上示例中,我们将example-dir目录下的大文件,压缩并分割成了50M大小。处理完毕后的文件名如下:
$ ls demo.z01 demo.zip
合并解压
要打开zip压缩包,需要用到 unzip
命令。如果你未安装 unzip
,可以通过以下命令进行安装:
$ sudo apt install -y unzip
首先,我们需要使用 zip
,以下命令将分割后的小压缩包合并到一个压缩包中。
$ zip -F demo.zip --out single-archive.zip Fix archive (-F) - assume mostly intact archive copying: example-dir/ copying: example-dir/demo.txt
现在,我们可以使用 unzip
命令打开压缩包了。
$ unzip single-archive.zip -d demo Archive: single-archive.zip creating: demo/example-dir/ inflating: demo/example-dir/demo.txt
方法三:7z
可以使用以下命令,安装7z。
$ sudo apt install -y p7zip-full
分卷压缩
7z使用起来更加简单,只需要指定压缩文件的大小、压缩文件名和要压缩哪些文件就可以了。
$ 7z -r -v50M a demo.7z ./example-dir/ 7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz (806EA),ASM,AES-NI) Scanning the drive: 1 folder, 1 file, 104857600 bytes (100 MiB) Creating archive: demo.7z Items to compress: 2 Files read from disk: 1 Archive size: 80614459 bytes (77 MiB) Everything is Ok
检查压缩后的文件。
$ ls demo.7z.001 demo.7z.002 example-dir
合并解压
要解压7z文件,只需要指定第1个压缩包就可以了。
$ 7z x -odemo demo.7z.001