Tarと同じように新しいZipファイルを取得するには、Zip
を実行する前にrm foo.Zip
を実行する必要がありますか?
$ mkdir foo; touch foo/bar
$ Zip -r foo.Zip foo
adding: foo/ (stored 0%)
adding: foo/bar (stored 0%)
$ rm foo/bar; touch foo/baz
$ Zip -r foo.Zip foo
adding: foo/ (stored 0%)
adding: foo/baz (stored 0%)
$ unzip -l foo.Zip
Archive: foo.Zip
Length Date Time Name
--------- ---------- ----- ----
0 2011-10-27 07:49 foo/
0 2011-10-27 07:49 foo/bar
0 2011-10-27 07:49 foo/baz
--------- -------
0 3 files
-FSオプションを使用して「ファイル同期」
Zip -FSr foo.Zip foo
これにより、フォルダー内の新しいファイルがZipに追加され、フォルダー内にないファイルがZipから削除されます。
-FS
オプションを使用する(または古いZipファイルを削除する)代わりの方法は、overwriteZip
をstdoutに書き込み、それを指定ファイル:
Zip -r - foo >foo.Zip
-r : Add directory and its contents
- : Instead of writing Zip to a file, write to stdout
foo : The directory to be zipped
>foo.Zip : Redirect stdout to file foo.Zip
foo.Zip
が存在する場合は、シェルリダイレクトによって上書きされます。つまり、毎回100%の時間で新しいZipファイルを取得できます。 ????