распаковать командную строку для синхронизации папки назначения

4

Есть ли способ разархивировать .zip в папку и синхронизировать содержимое этой папки с содержимым .zip?

Я знаю, что вы можете использовать опцию -u (pdate), которая обновит папку новыми файлами, но этого недостаточно. Мне нужно, чтобы сделать фактическую синхронизацию (удалить файлы, отсутствующие в .zip, и обновить файлы, которые являются более новыми).

Это также должно быть быстрым, так как я буду синхронизировать большие ZIP-файлы. Таким образом, стирание плюс чистая распаковка не вариант.

Я открыт для любого инструмента, который сделает эту работу. Но он должен работать без присмотра из командной строки.

fasteddo
источник

Ответы:

0

WinZip имеет имя надстройки поддержки командной строки WZUNZIP.EXE со следующей опцией, которая может быть использована в сочетании с его -e аргумент при извлечении:

-n - Распакуйте только новые файлы. Эта опция обновляет существующие файлы, если архивированный файл более новый, и создает новые, если они еще не существуют.

martineau
источник
Да, это похоже на параметр unzip.exe -u. Он только обновляет, он не выполняет полную синхронизацию. Мне нужно, чтобы удалить файлы из папки, если они не существуют в .zip.
fasteddo
Проверять, выписываться SynchronEX ,
martineau
Вау, спасибо. SynchronEX, кажется, отвечает всем требованиям. Однако для этого проекта мне нужно что-то бесплатное. Извините, что не упомянул это в оригинальном посте. Я не против пометить это как ответное, если это единственный вариант.
fasteddo
@fasteddo: Извините, в настоящее время я не знаю ничего бесплатного. Вы могли бы, вероятно, свернуть свой собственный, например, на (бесплатном) языке Python, который имеет встроенную поддержку .zip-файлов, однако всего за 20 долларов SynchronEX выглядит выгодно.
martineau
Да, это не деньги, это природа проекта. Спасибо за ваши предложения!
fasteddo
0

Я сам искал что-то такое, что могло бы иметь такую ​​возможность. Утилита Info-ZIP является бесплатной, основана на командной строке и имеет ключ -FS, который удаляет файлы из архива, которых больше нет в исходной папке, в дополнение к обновлению более новых файлов. И.Е. Синхронизация файлов 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" .
user134058
источник
1
К сожалению, это прямо противоположно тому, что задан вопрос. И, кажется, нет подходящего переключателя, чтобы иметь zip в качестве источника и папку в качестве места назначения. :-(
Hans-Peter Störr