«Предупреждение zip: имя не совпадает» при сжатии каталога


19

У меня есть папка около 180 ГБ, мне нужно сжать ее как:

zip -p password /Volumes/GGZ/faster/mybigfolder/* /Volumes/Storage\ 4/archive.zip

Но это говорит:

    zip warning: name not matched: /Volumes/Storage 4/archive.zip

Так как мне это сделать? С другой стороны, archive.zipне существует, но я пытаюсь его создать.


Попробуйтеzip -P password /Volumes/Storage\ 4/archive -p /Volumes/GGZ/faster/mybigfolder/*
Костас

Ответы:


7

Ваша команда должна быть:

zip -p password -r /Volumes/Storage\ 4/archive.zip /Volumes/GGZ/faster/mybigfolder/

Страница руководства ( man zip), показывает, что вы должны иметь:

zip <options> <archive> <inpath...>

Кроме того, -rдля этой цели настоятельно рекомендуется опция для рекурсии над оболочкой "*".


Еще одной связанной ошибкой является простая ошибка ввода (например, если вы скопировали команду из одного сценария в другой). Например, вместо winzip32.exe -a -r %DEST_PATH%\Output.zip %DEST_PATH%\Output.zip %SOURCE_PATH%\*.*, вы случайно набираете winzip32.exe -a -r %DEST_PATH%\Output.zip %DEST_PATH%\Output.zip %SOURCE_PATH%\*.*. Обратите внимание на дополнительные Output.zip... легко сделать!
AlainD

23

Эта ошибка также может быть вызвана сжатием символических ссылок в дереве каталогов.

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

Вы можете избежать этого (а также получить желаемый эффект, который заключается в том, чтобы не архивировать несколько копий файла), используя -y(или --symlinks) параметр.


0

Используйте рекурсивный флаг ( -r) вместо glob ( *) для сопоставления файлов для сжатия. Кроме того, сначала укажите имя архива, а затем укажите список файлов:

zip -p password -r /Volumes/Storage\ 4/archive.zip /Volumes/GGZ/faster/mybigfolder/

0

Я также получил эту ошибку в прошлом по другой причине, которую -rкоммутатор не может исправить. То, что случилось, - то, что я основал файлы, чтобы добавить к почтовому индексу со следующим кодом bash / переменной

somevar=`ls -1 somedir`

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

Если это ваша проблема, вы можете исправить это так:

somevar=`ls -1d somedir/*`

Как видите, я использовал -dпереключатель, а также /*в конце имени каталога, а затем файлы были успешно добавлены.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.