大きなバックアップファイルを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です。理由はわかりません。
ファイルを分割して1つにマージする正しい方法は何ですか?
編集する:
$ 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のファイルがあります。
$ 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
これは愚かな間違いです。 myはのcat
エイリアスですbat
。ほとんど使わなかったので気づかなかった。
使用:
env cat jcubic.tar.gz-* > jcubic.tar.gz
この問題を解決しました。
FAT32の6GBファイルは大丈夫で、FAT32 USBハードドライブから問題なくファイルを抽出できます。