我在 Ubuntu 中解压文件时遇到问题。这里,我有一个很大的压缩文件 (test.tar.gz),大小接近 1.2 TB,解压后变成了 3 TB。
我只有 4 TB 和 1 TB 的 SSD,因此我无法在单个 SSD 中解压缩文件。
所以,我的观点是;
- 如何将(已)压缩的文件拆分成几个部分?(例如,拆分成 2 个文件,每个文件都是 600 GB)
- 之后,由于文件数量太多,我不得不将这些文件放在不同的目录中。那么,即使这些文件位于不同的目录中,如何将它们解压到单个目录中呢?
答案1
使用split
命令:) 如果您想要 2 个文件,请使用-n
2:
split test.tar.gz -n 2
可以通过以下方式加入cat
:
cat x* > test2.tar.gz
将把所有以 开头的文件合并x
到test2.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),但这会导致更长的压缩/解压缩时间。