如何解压缩位于不同目录中的分割文件(来自一个压缩文件)?

如何解压缩位于不同目录中的分割文件(来自一个压缩文件)?

我在 Ubuntu 中解压文件时遇到问题。这里,我有一个很大的压缩文件 (test.tar.gz),大小接近 1.2 TB,解压后变成了 3 TB。

我只有 4 TB 和 1 TB 的 SSD,因此我无法在单个 SSD 中解压缩文件。

所以,我的观点是;

  1. 如何将(已)压缩的文件拆分成几个部分?(例如,拆分成 2 个文件,每个文件都是 600 GB)
  2. 之后,由于文件数量太多,我不得不将这些文件放在不同的目录中。那么,即使这些文件位于不同的目录中,如何将它们解压到单个目录中呢?

答案1

使用split命令:) 如果您想要 2 个文件,请使用-n2:

split test.tar.gz -n 2

可以通过以下方式加入cat

 cat x* > test2.tar.gz

将把所有以 开头的文件合并xtest2.tar.gz Replace x*by 这 2 个文件中(并添加目录)。

请注意,如果所有内容都在同一个分区上,则需要大约两倍的空间。

答案2

将 tarball gzip 压缩包拆分为两个文件,将一个放入较小的 SSD,另一个放入较大的 SSD;假设较小的 SSD 安装到 /mnt/smallerSSD,另一个 SSD 安装到 /mnt/biggerSSD:

split -b 800M test.tar.gz test.tar.gz.part.
mv test.tar.gz.part.aa /mnt/smallerSSD
mv test.tar.gz.part.ab /mnt/biggerSSD

这将创建两个文件 test.tar.gz.part.aa 和 test.tar.gz.part.ab,大小分别为 800MB 和 400MB(总计 1.2TB),并将它们分别放在不同的 SSD 中。如果您的较小 SSD 中的可用磁盘空间不足 800MB,请使用较小的值。

然后,使用 cat 和 tar 将整个档案提取到更大的 SSD 中

cd /mnt/biggerSSD
cat /mnt/smallerSSD/test.tar.gz.part.aa /mnt/biggerSSD/test.tar.gz.part.ab | tar -xvz

如果可用磁盘空间不足,这可能不起作用;在这种情况下,您可以使用 netcat/ssh 从本地网络中的其他设备传输(然后检索)某些部分,或者,您可以对您的 tarball 使用更积极的压缩算法(例如 bzip2),但这会导致更长的压缩/解压缩时间。

相关内容