Я пытаюсь добавить разархивированные файлы в существующую уже заархивированную папку, скажем new folder.zip
. Можно ли использовать zip -r new folder.zip
после добавления в них некоторых разархивированных файлов? Сожмет ли эта команда папку? Есть ли альтернатива, чтобы сделать это?
решение1
Используйте флаг обновления:-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%)
решение2
Я думаю, что вы можете добавлять файлы с помощью этой команды:
zip -r zipfile.zip newfile.txt newfile1.txt
Опция -r
команды zip позволяет добавлять файлы.
решение3
Я успешно использовал zip
команду. срасти(-g) опция, чтобы добавить подпапку, folder1/folder2
содержащую файлы fileA.txt
и fileB.txt
:
zip -gr folder.zip folder1/folder2
-r
означаетрекурсияреж.
Насколько я понимаю, -g должен увеличивать zip-файлы, а не создавать новый zip-файл (что может быть полезно для очень больших zip-архивов). В случае возникновения проблем вы можете попробовать сначала создать подпапки в folder.zip с помощью (например):
zip -g folder.zip folder1
zip -g folder.zip folder2
решение4
Если у вас много файлов в одном месте с вашим zip-архивом и вы хотите скопировать их все в архив, вы можете сделать следующее:
zip -ur zipfile.zip !(zipfile.zip)
Это обновит ваш zip-файл ( -u
опция) рекурсивно ( -r
опция) всеми найденными файлами, кроме самого zip-файла ( !
является отрицанием zip-файла)
Затем вы можете просто удалить все файлы, кроме zip-файла, следуя тому же правилу, что и выше:
rm !(zipfile.zip)