폴더에서 파일을 압축하는 스크립트가 있습니다. 압축 파일이 10MB를 넘지 않도록하고 싶습니다. 크기가 10MB를 초과하면 다른 ZIP 파일을 만들어야합니다.
이것에 사용할 수있는 명령 (또는 다른 방법)이 있습니까?
폴더에서 파일을 압축하는 스크립트가 있습니다. 압축 파일이 10MB를 넘지 않도록하고 싶습니다. 크기가 10MB를 초과하면 다른 ZIP 파일을 만들어야합니다.
이것에 사용할 수있는 명령 (또는 다른 방법)이 있습니까?
답변:
" --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
다음은 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