Mac (OS X 10.6.4) の Automator で以下のような差分データを作成するワークフローを作成しましたので、ご紹介します。
- 最終変更日が○年○月○日以降のデータのみ抽出
- ディレクトリ構造は維持
- 空ディレクトリや_notes/.mno(Dreamweaverが出力するデータ)等の不要データは削除
Automatorとは?
AutomatorとはMacに標準装備されている、様々な作業を自動化する事ができるアプリです。
若干動作が不安定ですが、単純なフローなら大きな問題はなさそうです。
「ちょっと手助けしてくれる」くらいの気持ちで付き合うと精神衛生上よさそうです。
ここで作成したフローは、.workflow という拡張子のデータとして保存し、必要に応じて実行することで自動化された作業が始まります。
(他にも「サービス」や「アプリケーション」、「フォルダアクション」等の形式のフローを作成できます)
今回は都合上、フローを以下の I〜IVに分け、別ファイルとして保存・実行することにしました。
I. 納品用データの準備
- 納品データを含むルートフォルダを選択(選択画面が出る)
- 1.で選択したフォルダをデスクトップにコピー
- 2.でコピーしたフォルダ名の末尾に「_sbn」(適当な文字列)をつける
II. 不要データ削除
- I で用意したフォルダを認識させる
- 1.のフォルダの内容をサブフォルダも含めて全て取得
- 以下のフィルタで不要データを抽出
・名前(ファイル/フォルダ)に「_bk」が含まれる(バックアップファイル)
・名前が「_(アンダーバー)」で始まる(DWが出力する_notes等)
・名前が「.DS」で始まる(Macの隠しファイル.DS_Store等。たぶん意味ない)
・拡張子が「mno」(DWが出力するデータ) - 3.で抽出したデータを別フォルダに移動
※「ゴミ箱に入れる」だと失敗することがあるため
III. 差分データの抽出
ディレクトリ構造を維持したまま、指定日以降のデータを抽出することはできないので、
代わりに指定日以前のデータを削除することにします。
- I. II. で用意したフォルダを認識
- 1.のフォルダの内容をサブフォルダも含めて全て取得
- 以下のフィルタで不要データを抽出
・最終変更日が「○年○月○日」より前(「ワークフローの実行時にこのアクションを表示」で実行時に日時を指定可)
・フォルダ以外(Macではフォルダ自身とフォルダの内容の最終変更日が同期せず(フォルダ内に今日更新したデータが含まれているのに、それを含むフォルダに変更日が10日前なんていうことがある)ので、ここでフォルダ以外を指定しないと最新データがフォルダごと削除される場合がある) - 3.で抽出したデータを別フォルダに移動
ここまでのフローで、差分データの抽出は完了です。
※空のディレクトリが大量に残った状態ですが、これは次の圧縮ファイル作成時に、MacWinZipperというアプリが削除してくれます。
ここで処理したフォルダを開き、差分データに間違いがないか確認しておくとよいです。
次に空フォルダや、Mac 特有の隠しファイル(リソースフォーク等)を削除した圧縮ファイルを作成します。
IV. MacWinZipperで圧縮ファイル作成〜メール添付
- I.〜III.で処理したフォルダを認識
- MacWinZipperで圧縮
※Macのデフォルトの圧縮アプリは、Mac特有のリソースフォークと呼ばれる隠しファイルもそのまま圧縮するため、Windowsで解凍するとそれらがゴミファイルとして出てきます。また日本語が含まれるファイル名が使われている場合、Windowsで解凍すると文字化けしたりデータが壊れたりすることがあります。MacWinZipperはこれらの問題を全て解決してくれる圧縮アプリです。ついでに空フォルダも削除してくれるので、一石二鳥です。さらに圧縮時にパスワードをかけることもできます。
詳しくは→MacWinZipper - 圧縮ファイル作成が完了したことを確認し、確認ウィンドウの「OK」をクリック
※この工程をはさむことで、圧縮中に次の工程に移るのを防ぎます。 - 圧縮元フォルダを削除
- 新規メール作成画面を立ち上げる
※必要に応じて宛先・本文を設定しておくとさらに手間を減らせます。 - 2.で作成した圧縮ファイルを認識
- 圧縮ファイルを 5.の新規メールに添付する
メール添付では遅れないような容量になりそうな場合に備えて、Dropbox 経由で送信するようなワークフローも準備しておくとよさそうです。
以上が、今回作成した納品用ワークフローです。
作成方法はスクリーンショットを参考にしてください。
注)ここで紹介した方法でいかなる不具合が発生しても, 当方では責任を負うことができませんので予めご了承ください。