写真の整理はなかなか面倒
まあ大体写真を撮る時ってのは大なり小なり何かのイベントだし、それは撮影日時と強烈に紐付けされるものなんだけど、例えば同じキヤノンのデジカメを2台持っていると1台目のIMG_0100.JPGと2台目のIMG_0100.JPGは当然違う写真なのにファイル名が衝突するとか、違うメーカーのカメラであっても2台で同時にシャッターボタンを押しちゃって撮影日時だけでファイル名を付け直すと衝突するなんてことがあるわけですよ。
PHPからPythonへ
んで、かなり昔からPHPで書いたスクリプトでこの問題を回避し続けていて、yyyy/mm/dd/camera model/(”%Y/%m/%d/camera model/”)というディレクトリに、yyyymmddhhiiss(”%Y%m%d%H%M%S”)というファイル名で保存してきたわけなんだけど、このあたりのツールをPHPで書くのはそろそろやめようかという気にもなってきたのでPythonで書き直して、ついでにやったことないから良く分からないなぁとかブツブツ言いながらHomebrewでインストール出来るようにしてみた。なんかhomebrew-phorganizeじゃなくて、phorganizeだけでインストール出来るようになると思ったら、何か間違えてるのかもしれない(/_;)
% brew tap rioriost/phorganize
% brew install rioriost/phorganize/homebrew-phorganize
んで、使い方の詳細はgithubに書いておいた。コードがキレイという自信はもちろん無いので、PRするなりブランチ切るなりでどんどん直しちゃってくれると勉強になってありがたいですm(__)m
参考:ワークフロー
このスクリプトを含めて写真データ管理のワークフローとしては以下のようなことをやってます。
- 撮影したファイルをフォルダごとデスクトップにコピーする。
EOSのSDカードなら"100EOS5D"
とか、iPhoneのLightroom Mobileのデータなら"lrm"っ
てフォルダを作ってそこにコピーする、と。 - phorganize -rmc ~/Desktop/100EOS5D/する。
ただしこれは-mを指定しているので、実行されているのはmvコマンド相当だから高速だけどファイルが消える可能性がある。とはいえSDカードの元ファイルがあるから大丈夫。 - 分類されたディレクトリを外付けのSSDにコピーする。
上に貼った画像を見れば分かる通りでここにコピーする。この時点でSDカードの中身は消去しても、デスクトップと外付けSSDにファイルがある状態なので安全。 - Lightroom Classicを起動して追加されたファイルをスキャンする。
外付けSSDにファイルの実体があってLightroomの最新のメタデータは内蔵SSDに持っている状態になる。このメタデータはownCloudのディレクトリにあるので、Lightroomを終了すると自動的にサーバにもコピーされる。 - 外付けSSDをプライマリサーバにバックアップする自作コマンドを実行する。
この時点でデスクトップのフォルダは消去しても、外付けSSDとプライマリサーバにファイルがある状態になる。 - 自宅サーバは冗長化したのでファイルがmacOSからバックアップされた瞬間、プライマリからセカンダリにもコピーされる。
写真ファイル:外付けSSD、プライマリサーバ、セカンダリサーバにデータがある状態。
メタデータ:ownCloudが同期した後、やはりセカンダリサーバにもコピーされる。 - 日次バッチでサーバのデータはAzureのストレージアカウントにバックアップされる。
写真ファイル:外付けSSD、プライマリ・セカンダリサーバ、Azureでデータがある状態。
メタデータ:内蔵SSD、プライマリ・セカンダリサーバ、Azureでデータがある状態。