zip 아카이브에서 파일 하나를 업데이트하는 방법
압축을 풀지 않고 zip 파일로 파일을 바꿀 수 있습니까?
업데이트할 파일은 대용량 zip 아카이브에 상주하는 XML 파일입니다.이 XML 파일을 업데이트하려면 보관 파일의 압축을 풀고 이전 XML 파일을 삭제한 다음 새 XML 파일을 추가한 다음 다시 압축해야 합니다.이 작업에는 상당한 시간이 걸립니다.따라서 스크립트를 통해 하나의 XML을 대체할 수 있기를 원합니다.나는 이미 내가 가지고 있는 XML에 대한 업데이트를 확인하는 것을 가지고 있습니다.
명령 사용하기
미안하지만, 나는 그런 일을 할 때 zip 명령어를 사용하고 싶지만, 문제는 스크립트가 실제로 안드로이드 폰용이고 zip은 아쉽게도 사용할 수 있는 명령어가 아니라는 것입니다. 미안하지만 그것을 빠뜨렸습니다. droid만 가 필요로 하는 않습니다.
다음을 시도합니다.
zip [zipfile] [file to update]
예:
$ zip test.zip test/test.txt
updating: test/test.txt (stored 0%)
zip
zip에서 하는 데 입니다. 그jar
Java Development Kit의 유틸리티가 더 쉬울 수 있습니다.를 업데이트하는 일반적인 작업을 .WEB/web.xml
JAR 파일(zip 파일일 뿐):
jar -uf path/to/myapp.jar -C path/to/dir WEB-INF/web.xml
여기서,path/to/dir
는 를포는디경다로가 포함된 입니다.WEB-INF
이 이 포함됨)web.xml
).
zip(1)에서 시작:
기존 zip 보관 파일의 이름을 지정하면 zip 보관 파일에서 동일한 이름의 항목을 바꾸거나 새 이름의 항목을 추가합니다.
그러니 그냥 사용하세요.zip
일반적으로 하나의 파일만 포함하는 새 .zip 파일을 만들 때처럼 명령합니다. 단, 지정한 .zip 파일 이름은 기존 아카이브가 됩니다.
업데이트 플래그 사용:
예:
zip -ur existing.zip myFolder
합니다.myFolder
입니다)의 (리고그것내니다입용그은)다)existing.zip
.
고급 사용:
업데이트 플래그는 실제로 수신 파일을 기존 파일과 비교하여 새 파일을 추가하거나 기존 파일을 업데이트합니다.
파일 에서 특정 를 추가 대로를 "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%)
이것이 오래된 질문이라는 것을 알지만, 저도 그렇게 하고 싶었습니다.zip 아카이브의 파일을 업데이트합니다.그리고 위의 답변들 중 어느 것도 저에게 도움이 되지 않았습니다.
여기 제가 한 일이 있습니다.임시 디렉터리가 생성됨abc
복사됨file.zip
로.abc
디렉터리에 있는 파일의 압축을 풉니다.나는 내가 편집하고 싶은 파일을 편집했습니다.안에 있는 동안abc
다음 명령을 실행했습니다.
user@host ~/temp/abc $ zip -u file.zip
updating: content/js/ (stored 0%)
updating: content/js/moduleConfig.js (deflated 69%)
-u
스위치가 변경된 파일/새 파일을 찾고 zip 아카이브에 추가합니다.
zip -u file.zip 경로/file_to_update를 사용할 수 있습니다.
zip 파일을 새로 고치는 -f 옵션도 있습니다.zip이 생성된 이후 업데이트된 모든 파일을 업데이트하는 데 사용할 수 있습니다(zip 파일 내 트리 구조 내에서 동일한 위치에 있다고 가정).
파일 이름이 /myfiles/myzip.zip인 경우 다음을 수행하면 됩니다.
zip -f /myfiles/myzip.zip
ZIP 아카이브 구조의 측면에서 - zip 파일을 다시 압축하지 않고 업데이트할 수 있습니다. 교체해야 할 파일 이전의 모든 파일을 건너뛰고 업데이트된 파일을 넣은 다음 나머지 파일을 추가하면 됩니다.그리고 마지막으로 업데이트된 중앙 디렉토리 구조를 배치해야 합니다.하지만, 저는 대부분의 일반적인 도구들이 당신이 이것을 만들 수 있는지 의심스럽습니다.
7zip
(7za)는 다음과 같이 파일/디렉토리를 적절하게 추가/삭제하는 데 사용할 수 있습니다.
예: (파일 날짜에 관계없이) 파일 교체MANIFEST.MF
JAR 파일에 파일을 저장합니다.그/source/META-INF
디렉터리에 포함되어 있습니다.MANIFEST.MF
파일을 저장할 파일jar
(zip):
7za a /tmp/file.jar /source/META-INF/
업데이트만(소스가 이전 버전인 경우 대상을 대체하지 않음)
7za u /tmp/file.jar /source/META-INF/
네, 가능합니다.
Linux 기반 시스템에서는 zip을 설치하기만 하면 명령줄에서 호출할 수 있습니다.man 페이지를 보세요: http://linux.die.net/man/1/zip . http://linux.die.net/man/1/zip
하지만 제 개인적인 경험으로 볼 때, 가능하다면 압축은 그렇게 중요하지 않습니다. 이것은 일반 타르 파일과 타르에서 더 잘 작동합니다.
언급URL : https://stackoverflow.com/questions/4799553/how-to-update-one-file-in-a-zip-archive
'sourcecode' 카테고리의 다른 글
Git/GitHub 기록에서 폴더 및 폴더 내용 제거 (0) | 2023.05.03 |
---|---|
UI 보기의 왼쪽 상단 및 오른쪽 상단 모서리에만 모서리 반지름을 설정하는 방법은 무엇입니까? (0) | 2023.05.03 |
새로운 DI를 사용하여 ILogger를 IWebJobs Startup을 사용하여 Azure 함수에 주입하려면 어떻게 해야 합니까? (0) | 2023.05.03 |
Xcode 10, UI 요소는 어디에 있습니까? (0) | 2023.05.03 |
WPF 데이터 템플릿이 목록 상자의 전체 너비를 채우도록 하려면 어떻게 해야 합니까? (0) | 2023.05.03 |