2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Macのzipコマンドについて(.DS_Store混入)

Last updated at Posted at 2021-02-05

はじめに

AWSのElasticBeanstalkでアプリケーションをzip化しようとした際に、問題点にぶつかったので、書き留めておきます。

zipコマンド

ファイルの圧縮

zip [圧縮ファイル出力名] [圧縮の対象ファイル]

下記のフォルダ構成でpythonフォルダ内のデータのみ圧縮したい場合は、pythonフォルダ内に移動し、zipコマンドを実行します。

.
└── python
    ├── EBSampleApp-Python.iml
    ├── application.py
    └── cron.yaml
実行コマンド
cd python
zip ../test1.zip *

作成後のデータ確認

zipinfo [zipファイル名]

zipファイルの情報を確認する事ができます。

作成されたzipファイル1
$ zipinfo test1.zip 
Archive:  test1.zip
Zip file size: 2641 bytes, number of entries: 4
-rw-r--r--  3.0 unx       84 tx defN 20-Jan-15 12:49 cron.yaml
-rw-r--r--  3.0 unx     6148 bx defN 21-Feb-05 20:12 .DS_Store
-rw-r--r--  3.0 unx     4981 tx defN 21-Feb-05 20:02 application.py
-rw-r--r--  3.0 unx      612 tx defN 20-May-30 08:57 EBSampleApp-Python.iml

.DS_Storeを含まずに圧縮する方法

macの場合、ファイル管理用の.DS_Storeが含まれてしまっている場合がある。
明示的に特定のファイルを含めたくない場合は-xオプションで指定します。
AWSでzipファイルをアップロードしてソースコードを展開するサービス 1.DS_Storeが含まれていても問題なく動作しました。

コマンド例
zip ../test1.zip * -x "*.DS_Store"

フォルダの圧縮

zip -r [圧縮ファイル出力名] [圧縮の対象ファイル]

下記のフォルダ構成でpythonフォルダを圧縮したい場合は、zipコマンドに-rオプションを指定します。

.
└── python
    ├── EBSampleApp-Python.iml
    ├── application.py
    └── cron.yaml
実行コマンド
zip -r test2.zip python/*

作成後のデータ確認

下記の情報からわかるように、pythonフォルダ自体も圧縮ファイルに含まれている。
zip -r test2.zip python/*で圧縮対象ファイルをpython/*と指定しているので、隠しファイル等は含まれていない。

作成されたzipファイル2
$ zipinfo test2.zip 
Archive:  test2.zip
Zip file size: 2907 bytes, number of entries: 3
-rw-r--r--  3.0 unx      612 tx defN 20-May-30 08:57 python/EBSampleApp-Python.iml
-rw-r--r--  3.0 unx     4981 tx defN 21-Feb-05 20:02 python/application.py
-rw-r--r--  3.0 unx       84 tx defN 20-Jan-15 12:49 python/cron.yaml

フォルダ内の隠しフォルダも含めて圧縮したい場合

下記のコマンドで圧縮します。

zip -r test3.zip python

フォルダ内の隠しフォルダも含めて圧縮したい場合(DS_Storeを除く)

zip -r test4.zip python -x "*.DS_Store"

当該フォルダ内で隠しフォルダも含めて圧縮したい場合(DS_Storeを除く)

一つ上の階層に「test.zip」というフォルダ名で圧縮フォルダを作成します。
対象のファイルには、-rオプションでフォルダを指定して、対象ファイルを.でカレントディレクトリに設定することで隠しファイルやフォルダを含む事ができます。

zip -r ../test.zip . -x "*.DS_Store"

まとめ

zipファイルを作成するときは、「.DS_Storeが混入していないか?」「意図しないフォルダ構成になっていないか?」を確認する為に、完成したzipファイルを確認しましょう!

zipファイル確認コマンド
zipinfo [zipファイル名]
  1. ElasticBeanstalkやLambdaなど。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?