如何拆分和合并大型 tar 球文件?

如何拆分和合并大型 tar 球文件?

我有这段代码可以将大型备份文件分割成可以保存在 FAT32 文件系统上的较小块。

split -b $(echo "6*(2^30)-1" | bc) --verbose $1/jcubic.tar.gz $1/jcubic.tar.gz-

当我想将它们组合成一个更大的文件时,我有这些块,但出现此错误:

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

我使用cat jcubic.tar.gz-* > jcubic.tar.gz的块总共有 29.7GB,但输出文件有 54.1GB。我不知道为什么。

拆分文件并将其合并为一个文件的正确方法是什么?

编辑:

$ echo jcubic.tar.gz-*
jcubic.tar.gz-aa jcubic.tar.gz-ab jcubic.tar.gz-ac jcubic.tar.gz-ad 
jcubic.tar.gz-ae jcubic.tar.gz-af jcubic.tar.gz-ag jcubic.tar.gz-ah

编辑2:

我使用了 Ext4 部分并创建了 6GB 块:

$ split -b $(echo "6*(2^30)-1" | bc) --verbose jcubic.tar.gz jcubic.tar.gz-

输入和块都有 42.3GB

$ $ ls -lsh
 43G -rw-r--r--. 1 root root  43G 05-18 23:09 jcubic.tar.gz
6,1G -rw-r--r--. 1 kuba kuba 6,0G 05-21 19:19 jcubic.tar.gz-aa
6,1G -rw-r--r--. 1 kuba kuba 6,0G 05-21 19:20 jcubic.tar.gz-ab
6,1G -rw-r--r--. 1 kuba kuba 6,0G 05-21 19:21 jcubic.tar.gz-ac
6,1G -rw-r--r--. 1 kuba kuba 6,0G 05-21 19:22 jcubic.tar.gz-ad
6,1G -rw-r--r--. 1 kuba kuba 6,0G 05-21 19:23 jcubic.tar.gz-ae
6,1G -rw-r--r--. 1 kuba kuba 6,0G 05-21 19:24 jcubic.tar.gz-af
6,1G -rw-r--r--. 1 kuba kuba 6,0G 05-21 19:25 jcubic.tar.gz-ag
311M -rw-r--r--. 1 kuba kuba 311M 05-21 19:25 jcubic.tar.gz-ah

但是当使用猫时:

cat jcubic.tar.gz-* ~/xxx/jcubic.tar.gz

我有 77GB 的文件,不是 tar 球:

$ file jcubic.tar.gz
jcubic.tar.gz: data
$ ls -lh jcubic.tar.gz
-rw-r--r--. 1 kuba kuba 77G 05-21 20:15 jcubic.tar.gz
$ tar xzvf jcubic.tar.gz 
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

答案1

这是一个愚蠢的错误, mycat是 的别名bat。我很少用所以没注意到。

使用:

env cat jcubic.tar.gz-* > jcubic.tar.gz

解决了这个问题。

FAT32 上的 6GB 文件就可以了,我可以从 FAT32 的 USB 硬盘中提取该文件,没有任何问题。

相关内容