큰 백업 파일을 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의 파일이 있습니다.
$ 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 하드 드라이브에서 문제 없이 파일을 추출할 수 있습니다.