압축이 풀린 파일을 압축 폴더에 추가


32

압축이 풀린 파일을 기존의 압축 된 폴더 say에 추가하려고합니다 new folder.zip. zip -r new folder.zip압축이 풀린 파일을 파일에 추가 한 후 사용할 수 있습니까? 이 명령은 폴더를 압축합니까? 이를위한 대안이 있습니까?


파이프, 원본 파일 압축 풀기 | 그런 다음 완전히 새로운 파일을 만드는 방법으로 전체 내용을 압축하십시오. 단일 명령으로 어떻게 할 것인지 잘 모르겠습니다.
unixmiah

답변:


44

업데이트 플래그를 사용하십시오. -u

예:

zip -ur existing.zip myFolder

이 명령은 압축하고에 myFolder내용을 추가 합니다 existing.zip.


고급 사용법 :

업데이트 플래그는 실제로 들어오는 파일을 기존 파일과 비교하여 새 파일을 추가하거나 기존 파일을 업데이트합니다.

따라서 zip 파일 내에서 특정 서브 디렉토리를 추가 / 업데이트하려면 원하는대로 소스를 업데이트 한 다음 -u플래그를 사용 하여 전체 소스를 다시 압축하십시오 . 변경된 파일 만 압축됩니다.

소스 파일에 액세스 할 수 없으면 zip 파일의 압축을 풀고 원하는 파일을 업데이트 한 다음 -u플래그를 사용하여 다시 압축 할 수 있습니다 . 다시, 변경된 파일 만 압축됩니다.

예:

원본 소스 구조


ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│   ├── file3.txt
│   ├── Logs
│   │   ├── logs1.txt
│   │   ├── logs2.txt
│   │   ├── logs3.txt

업데이트 된 소스 구조


ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│   ├── file3.txt
│   ├── Logs
│   │   ├── logs1.txt
│   │   ├── logs2.txt
│   │   ├── logs3.txt 
│   │   ├── logs4.txt <-- NEW FILE 

용법

$ zip -ur existing.zip ParentDir 
> updating: ParentDir/ChildDir/Logs (stored 0%)
>   adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)

감사! 어떻게 폴더를 지정할 수 있습니다 에서 에 추가 할 수있는 지퍼를?
Aaron Esau

귀하의 질문에 답변 할 섹션을 추가했습니다. :)
Ethan Strider

0

이 명령을 사용하여 파일을 추가 할 수 있다고 생각합니다.

zip -r zipfile.zip newfile.txt newfile1.txt

-r압축 명령의 옵션은 파일을 추가로 할 수 있습니다.


-r재귀 옵션입니다.
ctrl-alt-delor

@ 리차드, 내가 고칠거야. 김미 몇
ryekayo

@richard, 내가 얻은 소스는 -r 명령을 사용하여 기존 압축 파일을 수정할 수 있다고 말합니다. linuxnix.com/2014/05/…
ryekayo

2
추가 — 기존 항목을 업데이트하고 새 파일을 추가합니다. 아카이브가 존재하지 않으면 작성하십시오. 이것이 기본 모드입니다. (파일을 바꾸거나 추가하는 옵션이 필요 -r하지 않습니다. 디렉토리를 추가하거나 디렉토리를 추가하지 않을 때 사용할 수 있습니다 . 디렉토리를 추가하고 싶지 않고 언제든지 내용을 추가하지 않으려는 경우에는 거의 항상 간단히 말해서 예제는 정확하지만 설명이 잘못되었습니다.) (테스트하기에 가장 좋은 것은 매뉴얼에 대한 나의 해석 일뿐입니다).
ctrl-alt-delor

2
안전상의 이유로 기존 아카이브를 수정 하시겠습니까? 대신 최소한 안전 사본을 만들고 추가를 한 다음 새 아카이브에 커밋하기 전에 아카이브의 무결성을 다시 확인하십시오.
mdpc


0

나는 zip명령 으로 성공했다 . 와 함께 성장한다 (-g) 옵션을 순서대로 하위 폴더 추가 folder1/folder2파일 포함 fileA.txtfileB.txt:

zip -gr folder.zip folder1/folder2

-r재귀 디렉터리를 의미합니다 .

내 이해에서 -g는 새로운 zip 파일을 만들지 않고 zip 파일을 증가시켜야합니다 (매우 큰 zip 아카이브에 유용 할 수 있음). 문제가 발생하면 먼저 다음을 사용하여 folder.zip에 하위 폴더를 만드십시오.

zip -g folder.zip folder1
zip -g folder.zip folder2

0

zip 아카이브와 동일한 위치에 많은 파일이 있고 모든 파일을 아카이브에 복사하려는 경우 다음을 수행 할 수 있습니다.

zip -ur zipfile.zip !(zipfile.zip)

이것은 zip 파일을 업데이트합니다 ( -u-r zip 파일 자체를 제외한 모든 옵션)을 재귀 적으로! 의 부정입니다)

그런 다음 위의 동일한 규칙에 따라 zip 파일을 제외한 모든 파일을 간단히 삭제할 수 있습니다.

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