[linux] tar, gz, zip 또는 bzip2를 사용하여 파일 분할 [닫힘]

약 17-20GB의 큰 파일을 압축해야합니다. 파일 당 약 1GB의 여러 파일로 분할해야합니다.

Google을 통해 솔루션을 검색하고 splitcat명령을 사용하는 방법을 찾았습니다 . 그러나 그들은 큰 파일에는 전혀 작동하지 않았습니다. 또한 Windows에서는 작동하지 않습니다. Windows 컴퓨터에서 추출해야합니다.



답변

split다음 -b옵션 과 함께 명령을 사용할 수 있습니다 .

split -b 1024m file.tar.gz

@ Joshua 의 답변을 사용하여 Windows 컴퓨터에서 다시 어셈블 할 수 있습니다 .

copy /b file1 + file2 + file3 + file4 filetogether

편집 : @Charlie는 아래 주석에서 언급했듯이 접두어를 명시 적으로 설정해야합니다. 접두사가 x다르게 사용 되므로 혼동 될 수 있습니다.

split -b 1024m "file.tar.gz" "file.tar.gz.part-"

// Creates files: file.tar.gz.part-aa, file.tar.gz.part-ab, file.tar.gz.part-ac, ...

편집 : 질문이 닫히고 가장 효과적인 해결책 이이 답변의 내용과 매우 유사하므로 게시물을 편집하십시오.

# create archives
$ tar cz my_large_file_1 my_large_file_2 | split -b 1024MiB - myfiles_split.tgz_
# uncompress
$ cat myfiles_split.tgz_* | tar xz

이 솔루션은 압축을 풀 때 중간 크기의 큰 파일을 사용할 필요가 없습니다. tar -C 옵션을 사용하여 결과 파일에 다른 디렉토리를 사용하십시오. btw 아카이브가 단일 파일로만 구성된 경우 tar를 피하고 gzip 만 사용할 수 있습니다.

# create archives
$ gzip -c my_large_file | split -b 1024MiB - myfile_split.gz_
# uncompress
$ cat myfile_split.gz_* | gunzip -c > my_large_file

Windows의 경우 동일한 명령의 이식 된 버전을 다운로드하거나 cygwin을 사용할 수 있습니다.


답변

Linux에서 분리하는 경우에도 Windows에서 다시 어셈블 할 수 있습니다.

copy /b file1 + file2 + file3 + file4 filetogether


답변

tar를 사용 하여 여러 아카이브분할

cygwin을 포함하여 Windows에서 tar 파일로 작동하는 많은 프로그램이 있습니다.


답변

테스트 된 코드는 처음에 하나의 아카이브 파일을 만든 다음 분할합니다.

 gzip -c file.orig > file.gz
 CHUNKSIZE=1073741824
 PARTCNT=$[$(stat -c%s file.gz) / $CHUNKSIZE]

 # the remainder is taken care of, for example for
 # 1 GiB + 1 bytes PARTCNT is 1 and seq 0 $PARTCNT covers
 # all of file
 for n in `seq 0 $PARTCNT`
 do
       dd if=file.gz of=part.$n bs=$CHUNKSIZE skip=$n count=1
 done

이 변형은 단일 아카이브 파일 작성을 생략하고 바로 파트 작성으로 이동합니다.

gzip -c file.orig |
    ( CHUNKSIZE=1073741824;
        i=0;
        while true; do
            i=$[i+1];
            head -c "$CHUNKSIZE" > "part.$i";
            [ "$CHUNKSIZE" -eq $(stat -c%s "part.$i") ] || break;
        done; )

이 변형에서 아카이브의 파일 크기를로 나눌 수있는 $CHUNKSIZE경우 마지막 부분 파일의 파일 크기는 0 바이트입니다.


답변