Используйте флаг обновления: -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
│ │ ├──<b> logs4.txt <i><-- NEW FILE </i></b>
Использование
<b>$ zip -ur existing.zip ParentDir </b>
> updating: ParentDir/ChildDir/Logs (stored 0%)
> adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)