ディレクトリの圧縮中に「zip warning:name not matched」


19

約180 GBのフォルダーがあり、次のように圧縮する必要があります。

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...簡単に!
アラン

23

このエラーは、ディレクトリツリー内のシンボリックリンクが圧縮されている場合にも発生する可能性があります。

これらに正しい宛先がない場合(おそらくディレクトリが他の場所から移動またはコピーされたため)、zipはシンボリックリンクをたどってターゲットファイルをアーカイブしようとします。

-y(または--symlinks)オプションを使用することで、これを回避できます(また、とにかく必要な効果を得ることができます。これは、ファイルの複数のコピーをアーカイブしないことです)。


0

-rglob(*)の代わりに再帰フラグ()を使用して、圧縮するファイルを一致させます。さらに、最初にアーカイブ名を指定してから、ファイルのリストを指定します。

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

0

-rスイッチで修正できない別の理由で、過去にこのエラーが発生しました。起こったことは、次のbashコード/変数を使用してzipに追加するファイルをベースにしていることです

somevar=`ls -1 somedir`

問題はls、現在のディレクトリにあるかのようにファイルを一覧表示するだけであり、これzipが文句を言う理由です(間違った/現在のディレクトリを検索するように指示されているため、ファイルはzipに存在しません)。

これが問題であれば、次のように修正できます。

somevar=`ls -1d somedir/*`

ご覧のとおり、私は-dスイッチを使用し/*、ディレクトリ名の最後にもファイルを追加しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.