programing

tar, gz, zip 또는 bzip2를 사용하여 파일 분할

newstyles 2023. 4. 19. 22:34

tar, gz, zip 또는 bzip2를 사용하여 파일 분할

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

나는 구글을 통해 해결책을 찾고 그것을 사용하는 방법을 찾았다.split그리고.cat명령어를 지정합니다.그러나 큰 파일에서는 전혀 작동하지 않았습니다.또, Windows 에서는 동작하지 않습니다.Windows 머신에서 압축을 풀어야 합니다.

이 명령어는 에서 사용할 수 있습니다.-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

윈도의 경우 동일한 명령어의 포트화된 버전을 다운로드하거나 cygwin을 사용할 수 있습니다.

Linux에서 분할하는 경우에도 Windows에서 재구성할 수 있습니다.

copy /b file1 + file2 + file3 + file4 filetogether

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

윈도의 tar 파일로 동작할 수 있는 많은 프로그램들이 있습니다. sygwin도 포함됩니다.

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

 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바이트가 됩니다.

언급URL : https://stackoverflow.com/questions/1120095/split-files-using-tar-gz-zip-or-bzip2