Something

首页 / 文章 / RSS

Linux中如何实现大文件分卷压缩和合并解压

简介

个别时候,当我们想上传文件时,可能因为文件太大,网速太慢等原因,导致上传失败。此时,我们必须将大文件分割成一些小文件,以便上传。

本文将介绍在Linux中,如何通过以下几种方法实现大文件的分卷压缩和合并解压:

方法一:tar

方法二:zip

方法三:7z

为方便演示,我们先使用以下命令,创建1个100M的文本大文件:

$ mkdir ./example-dir
$ base64 /dev/urandom | head -c 100M > ./example-dir/demo.txt

方法一:tar

分卷压缩

以下示例中,我们使用 tarsplit 命令,将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