如何在Linux中使用Split命令将大型归档文件拆分为多个小文件

虽然创建存档的主要原因之一是易于处理和传输,有时压缩文件本身是如此之大。

尽管创建档案的主要原因之一是易于处理和传输,但有时压缩文件本身也是如此之大,从而成为通过网络转移的噩梦,特别是当网络速度较慢时。

那么在这样的情况下应该做什么呢? 有没有解决这个问题? 嗯,是的 - 一个解决方案是将压缩文件分解成更小的位,这可以很容易地通过网络传输。 在目的地,您可以加入他们以获取原始的档案。

如果解决方案听起来很有趣,并且您想要在Linux中明确了解如何完成,您将很高兴地知道,本教程将逐步讨论所有重要的细节。

在我们继续之前,请注意,本文中提到的所有说明和命令都已在Ubuntu 14.04上进行了测试。

如何拆分大档案

存在一个命令行实用程序 - 称为拆分 - 可以帮助您将文件分割成多个。 大多数Linux发行版都是安装在开箱即用的,所以您不必执行任何额外的步骤来下载和安装它。 以下是此命令的语法:

split [OPTION]... [INPUT [PREFIX]]

在这里,INPUT表示需要分割成较小位的文件的名称,而PREFIX是要作为输出文件名称前缀的文本。 在我们的例子中,OPTION将是-b ,以便我们可以指定输出文件的大小。

要通过一个示例了解Split的用法,您需要先打开一个要分割的压缩文件。 例如,在我的情况下,我有以下60MB的.zip文件:

档案将被拆分

这是Split命令行动:

Linux拆分命令

所以你可以看到,使用-b选项,我要求Split命令将大的.zip文件分成相同的20MB,提供压缩文件的完整名称以及前缀文本。

以下是我如何验证Split命令实际上是要做的事情:

检查拆分命令的结果

从上述屏幕截图的输出可以看出,输出中产生了三个名称包括我提供的前缀,重量为20MB的文件。

当然,除了.zip文件,您也可以使用上述方法来分割其他类型的压缩文件。 例如,以下是我使用与之前讨论过的相同的命令来分割.tar.xz文件:

拆分tar.gz文件。

正如你现在所理解的那样,如果要以大小为MB的多个块分割文件,则需要使用字母M与您在命令行中提供的数字。 如果 - 就像我们刚刚讨论的那样 - 文件的大小应该是KB,你应该使用字母K。

到目前为止,我们只使用了Split命令提供的-b选项; 这是因为它执行我们想要的 - 告诉命令根据命令行上该选项后面的大小拆分输入文件。 但是,根据您的具体情况和要求,您可能希望使用Split命令提供的其他一些选项。

以下是选项列表,并简要说明了他们的工作:

  • -a ,-- suffix-length = N :生成长度为N的Postfix(默认为2)
  • --additional-suffix = SUFFIX :附加一个SUFFIX到文件名。
  • -b ,-- bytes = SIZE :将每个输出文件的SIZE字节
  • -C ,-- line-bytes = SIZE :每个输出文件最多输入SIZE个字节的行
  • -d ,-- numeric-suffixes [= FROM] :使用数字Postfix而不是字母。 FROM更改起始值(默认为0)。
  • -e ,-- elide-empty-files :不要用'-n'生成空的输出文件
  • --filter = COMMAND :写入shell命令; 文件名是$ FILE
  • -l ,-- lines = NUM​​BER :每个输出文件放置NUMBER行
  • -n ,-- number = CHUNKS :生成CHUNKS输出文件。
  • -u ,-- unbuffered :立即将输入复制到'-nr / ...'

到目前为止,我们只讨论了如何将大型存档拆分成多个较小的部分。 不用说,直到你也知道如何加入他们来检索原始的压缩文件,这是没有用的。 所以,你可以这样做:

没有特殊的命令行实用程序加入较小的块,因为好的老Cat命令能够处理这个任务。 例如,以下是通过Cat命令检索Kakulinlin32.zip文件的方法:

加入分割文件

您可以提取检索到的归档,并将其与原始存档进行比较,以交叉验证没有任何更改。

结论

如果您是Linux用户,并且您的日常工作涉及使用大型压缩文件,并通过网络与其他人共享,那么在某些情况下可能需要拆分存档的机会很大。 当然,本教程中提到的解决方案可能不是唯一可用的解决方案,但它确实是最简单和最少的耗费之一。

如果您使用其他方法拆分大型存档,然后再将其加入,并希望与他人共享您的解决方案,则可以在下面的注释中进行。