약 17-20GB의 큰 파일을 압축해야합니다. 파일 당 약 1GB의 여러 파일로 분할해야합니다.
Google을 통해 솔루션을 검색하고 split
및 cat
명령을 사용하는 방법을 찾았습니다 . 그러나 그들은 큰 파일에는 전혀 작동하지 않았습니다. 또한 Windows에서는 작동하지 않습니다. Windows 컴퓨터에서 추출해야합니다.
약 17-20GB의 큰 파일을 압축해야합니다. 파일 당 약 1GB의 여러 파일로 분할해야합니다.
Google을 통해 솔루션을 검색하고 split
및 cat
명령을 사용하는 방법을 찾았습니다 . 그러나 그들은 큰 파일에는 전혀 작동하지 않았습니다. 또한 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을 사용할 수 있습니다.
-b 1024MiB
하면 유효하지 않은 바이트 수라는 오류가 발생했습니다. --bytes=1024m
작품 사용하기 .
cat
파일을 다시 어셈블 할 필요가 없습니다 . copy /b file1 + file2 + etc..
Windows에서 사용할 수 있으며 Linux로 다시 복사하면 tar는 재 조립 된 tarball을 읽을 수 있습니다. 방금 시도했습니다.
--numeric-suffixes
은 알파벳 대신 숫자 접미사를 사용합니다.
Linux에서 분리하는 경우에도 Windows에서 다시 어셈블 할 수 있습니다.
copy /b file1 + file2 + file3 + file4 filetogether
copy /b file* filetogether
- support.microsoft.com/kb/71161
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 바이트입니다.
split
이미 무엇입니까 .