Есть ли способ распаковать .zip-архив в папку и синхронизировать содержимое этой папки с содержимым .zip-архива?
Я знаю, что можно использовать опцию -u(pdate), которая обновит папку новыми файлами, но этого недостаточно. Мне нужно, чтобы она выполнила настоящую синхронизацию (удалила файлы, которых нет в .zip, и обновила файлы, которые являются новыми).
Он также должен быть быстрым, так как я буду синхронизировать большие .zip-файлы. Поэтому очистка плюс чистая распаковка — не вариант.
Я открыт для любого инструмента, который справится с этой задачей. Но он должен работать без участия пользователя из командной строки.
решение1
WinZipимеет надстройку поддержки командной строки WZUNZIP.EXE
со следующим параметром, который можно использовать в сочетании с его -e
аргументом при извлечении:
-н-- Распаковывать только новые файлы. Эта опция обновляет существующие файлы, если архивированный файл новее, и создает новые, если их еще нет.
решение2
Я сам долго искал что-то с такой возможностью. Утилита Info-ZIP бесплатна, работает на основе командной строки и имеет переключатель -FS, который удалит из архива файлы, которых больше нет в исходной папке, а также обновит новые файлы. Синхронизация файлов IE ZIP. http://www.info-zip.org/ Примечание: Единственная проблема, с которой я столкнулся при использовании этой утилиты, заключается в том, что нет возможности явно указать исходную папку в качестве аргументов командной строки. Она использует текущий рабочий каталог в качестве источника. Поэтому в скрипте вы сначала используете команду CD, чтобы перейти в исходный каталог, а затем инициировать команду ZIP. Например:
CD /D D:\Program Settings\Favorites
zip -FS -r -9 -b %Temp% -q -ds 0 "D:\Backup\Favorites.zip" .