크기 제한이있는 파일을 압축하는 방법은 무엇입니까?


19

폴더에서 파일을 압축하는 스크립트가 있습니다. 압축 파일이 10MB를 넘지 않도록하고 싶습니다. 크기가 10MB를 초과하면 다른 ZIP 파일을 만들어야합니다.

이것에 사용할 수있는 명령 (또는 다른 방법)이 있습니까?


1
질문에 gzip 태그가 있지만 텍스트가 zip을 나타냅니다. 명확히 할 수 있습니까? (답변은 다른 형식에 따라 접근 방법 사이에 구분됩니다.)
는 Håkan 고 Lindqvist에게

gzip을 사용한 이유를 태그에 zip을 추가 할 수 없습니다.이 문제에 맞출 수있는 gzip 방법을 사용하는 경우에도 사용할 수 있습니다.
Vishnu

답변:


21

" --split-size "옵션을 사용하여 " zip "자체 의 " split archive "기능을 사용할 수 있습니다 .

"zip"맨 페이지 ( " man zip")에서 :

(...)

분할 아카이브의 한 가지 사용은 여러 개의 이동식
매체 에 큰 아카이브를 저장하는 것 입니다. 20 개의 분할 파일이있는 분할 아카이브의 경우 파일
이름 은 일반적으로 ARCHIVE (아카이브를 아카이브 이름으로 대체) AR-
CHIVE.z01, ARCHIVE.z02, ..., ARCHIVE.z19, ARCHIVE.zip으로 지정됩니다. 합니다
마지막 파일이 .zip 파일입니다.

(...)

-s splitsize-
분할 크기 splitsize

분할 크기는 선택적으로 승수 뒤에 오는 숫자입니다.
현재 숫자는 정수 여야합니다. 승수는
현재 k (킬로바이트), m (메가 바이트), g (기가 바이트)
또는 t (테라 바이트) 중 하나 일 수 있습니다 . 64k가 최소 분할 크기이므로
승수가없는 숫자는 기본적으로 메가 바이트입니다. 예를 들어, CD 에 구울 때 유용 할 수있는 670MB 분할이
있는 bar
디렉토리 의 내용으로 foo라는 분할 아카이브
를 만들려면 다음 명령을 사용하십시오.

                zip -s 670m -r foo bar

사용 될수있다.

따라서 분할 zip 아카이브를 작성 하려면 다음을 수행 할 수 있습니다 ( " -r"는 디렉토리의 서브 디렉토리를 포함하는 "재귀"스위치입니다).

$ zip -r -s 10m archive.zip directory/

파일 압축을 풀려면 " zip"맨 페이지에서 "-s 0`"스위치를 사용해야한다고 설명합니다.

(...)

 zip -s 0 split.zip --out unsplit.zip

분할 아카이브를 단일 파일 아카이브로 변환합니다.

(...)

따라서 먼저 "-s 0"스위치를 사용하여 ZIP 파일"분리"하십시오 .

$ zip -s 0 archive.zip --out unsplit.zip

... 그리고 나서 분할되지 않은 파일의 압축풉니 다.

$ unzip unsplit.zip


6
tar -czvf - /path/to/files | split -b 10M - archive.tar.gz

많은 파일을 제공합니다 :

archive.tar.gzaa

archive.tar.gzab

...

그런 다음 압축을 풀 수 있습니다.

cat archive.tar.* | tar -xzvf -

2

다음은 5GB 파일 (OP가 요청 한대로 1GB 대 10MB로 분할)에 대해 수행 한 방법입니다 ...

예 : 5GB 파일1GB 파일 로 분할하여 FAT32 USB에 복사하려면 (파일 이름 "FIVE_GB_FILE.ISO")

1 단계 : 파일 압축 (압축 없음, 소스와 동일한 디렉토리)

zip -0 FIVE_GB_FILE.ZIP FIVE_GB_FILE.ISO

2 단계 : 5GB zip 파일을 1GB zip 파일로 분할

zip -s 1000m SPLIT_5GB_FILES FIVE_GB_FILE.ZIP

Voila ... 다음과 같은 1GB 파일이 있어야합니다 (및 원본 및 1 단계의 zip).

SPLIT_5GB_FILES.zip
SPLIT_5GB_FILES.Z01
SPLIT_5GB_FILES.Z02
SPLIT_5GB_FILES.Z03
SPLIT_5GB_FILES.Z04
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.