我有这段代码可以将大型备份文件分割成可以保存在 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 硬盘中提取该文件,没有任何问题。