$(which zip) -r ../data.zip .
フォルダの内容は時間の経過とともに動的に変更されるため、最初にhuge.pdf
インクルードファイルでテストしてから削除しましたが、まだdata.zip
同じサイズを維持しました。解凍すると、huge.pdf
そこにあるファイルを見ることができます。
zipコマンドで既存のアーカイブを完全に上書きしたいと思います。
私のアプリケーション(nodejs)でこのシェルコマンドを実行しています。
編集:リンクされた質問が重複しているようではありません。
答え1
まずzip
、through実行は$(which zip)
as実行と同じであることに注意してくださいzip
。このwhich
ユーティリティは、ユーザーパスでプログラムファイルを探します。
既存のZipアーカイブが与えられるzip
と次へ追加新しいファイル、変える既存のファイルですが、そうではありません。削除ファイルシステムから削除された場合はアーカイブのファイルです。
Zipアーカイブからファイルを削除するには:
$ zip -d archive.zip filename
もちろん、rm
アーカイブを再作成する前に削除することもできます。
NodeJSスクリプトの場合は、次のものを使用できます。
rm -f ../data.zip && zip -r ../data.zip .
アーカイブが存在しない場合でも、このフラグは失敗-f
しません。rm
rm
答え2
zip
コマンドのヘルプトピックに示すように、次のようになります。
デフォルトの動作は次のとおりです。追加または交換リストのzipファイルエントリ
huge.pdf
これは、デフォルトの動作にzipファイルのファイルの削除が含まれていない理由と、そのファイルがそのまま残っている理由を示しています。
既存のアーカイブを完全に上書きするには、新しい一時zipファイルを作成して古いファイルを置き換えることができます。また、which
コマンドの呼び出しが不要なようであるため、コマンドは次のようにする必要があります。
zip -r temp.zip . ; mv temp.zip ../data.zip