久しぶりのエントリーです。
先日まで非常に便利に使わせてもらっていた「Firestorage」ですが、無料プランでは送信容量に制限がかかってしまいました。
アップロードは早いんですが、ダウンロードは……なので、250MBという容量制限はいいと言えばいいんでしょうけど。でも印刷物の下版ですと、250MBだと少々厳しい時もしばしば。
他に良いオンラインストレージはないものかと探してみましたが、これといってよいサービスがみつかりません。
以前は下版データを、FTP経由でレンタルサーバーにアップロードして、Basic 認証をかけた上でメール送信……という手順を踏んでいましたが、ああいう便利なサービスを覚えてしまうと、ちょっとしたことでも面倒になりますよね。
「ええいこうなったら作ってしまえ」というわけでやってみました。
自前 Firestorage ダウンロードに至るまでの大雑把な流れ
- ダウンロードURLが記載されたファイルにアクセスがあったらメール通知(ここは決め撃ち)
- 正式なアクセスかどうかは、リファラから判断(リファラの一部がファイル名なのでユニーク値に近いかと)
- 念のため、利用者の名前を入れてもらって(お名前入力モードのマネ)、利用規約に同意した人が、ダウンロードページに進めます。
- ダウンロードページでは、リファラからファイル名を取り出し、あちこち使い回ししてます。
- グローバルIP、ホスト情報は抜き出してます。
なかなか良い感じに仕上がってます。↓こんな感じ。
アップロードはどうするのか
アップロードもphpでごりごりとか思ったんですが、和文(特に Mac OS X の UTF は……)面倒な気がしたので、ここはMac OS Xのいいとこでもある「Automator」+「AppleScript」で行うことにしました。
今使っているFTPクライアントは「Transmit 4」。
以前は Cyberduck というドネーションの FTP クライアントを使っていましたが、twitter で お付き合いのある hoge_systemz さんや salchu さんも超おすすめの FTP クライアントに最近乗り換えました。
どちらも scriptable なのは知っていましたが、Transmit のスクリプト操作は初めて。とりあえずサンプルを漁り、なんとか形になりました。
アップロードに至るまでの流れ
- 対象ファイルを右クリックで選択
- コンテクストメニューから「ファイルアップロードのお知らせ」を選ぶ
- Automator のサービスを実行して FTP で対象ディレクトリにアップロード
- 完了したら Mail.app で新規メッセージを自動作成
- すべてAppleScriptで書いているので、ファイル名もアップロードURLも入った状態です
こちらの操作感もなかなかいいです。
(まぁ自分用なので、エラー処理とかかなり端折ってます)
↓ココまで自動で作らせてるので楽ちんです。
お役を終えたファイルたちはどうするのか
FTPで適当な時期を見て手動削除……と思っていたんですが、ディレクトリ監視とかなんかうまい手段はないかと思って、どっとみちCronで処理するんだから、シェルスクリプトでいろいろググりました。
ありました。ありましたよ、ええ。
- find [somedir] -type f -mtime +8 -exec rm {} \;
この1行で7日以上前のタイムスタンプのファイルが削除されます。
SSH からこのコマンドで一発削除とかも可能なんですが、やっぱり忘れると思うので cron で実行することに。
しばらくは快適に使えそうです。