犬も猫も空想も扱っておりません。(旧・エト記)この広告は、90日以上更新していないブログに表示しています。Rubyデジカメを手に入れた2000年くらいから、何とか写真を失わずにバックアップしてきたが、子供ができてからその量が激増し、300GBを越えようとしている。統一的な写真のバックアップの必要性を感じ色々検討してみた。Macを使っていた頃はiPhotoを利用し、Windowsに移ってからはまた別のソフトで写真をインポートしていた。重複したファイルも沢山ある。iPhotoは、インポート時にタイムスタンプを勝手に変更するという問題が(少なくとも私が使っていたバージョンには)あって好きじゃなかったし、そのほかにも色々と問題があって、スクリプトで前処理して直した後、結局自分で管理することにした。写真(と動画)の管理のポリシーマスターは、カメラからインポートした生データ。加工したものは基本的にバックアップ対象としない。例)D:\Family\Photos\2012、Family\Movies\2012ファイル名は「YYYY-mm-dd-HHMMSS-(sha1ハッシュ).(拡張子)」とする。ハッシュを使うのは、カメラから同じファイルを複数回インポートするのを安全に避けるため。タイムスタンプのみだと、連続撮影で時間がかぶることがあるし、タイムスタンプとオリジナルのファイル名の組み合わせだと、サマータイムなどでローカル時間がシフトしたときに同じファイルを重複して読み込んでしまう問題がある。いってUTCをファイル名に使うと、それはそれで使い勝手が悪い。ファイルの一意性だけであればハッシュ値をファイル名にすればよいが、何らかの拍子にタイムスタンプが吹っ飛んだり、スクリプトでいじったり、エクスプローラでソートするときの利便性を考え、日付をプレフィックスとして追加する。Cygwin上でインポート元のフォルダをカレントディレクトリにあわせ、以下のスクリプトを実行すると、BACKUP_BASE_DIR以下に次々にファイルを放り込む仕組み。is_copyを制御することで、コピーか移動かを調整できる。false})end留意点など運用上タイムスタンプが狂うことは無いはずなので「タイムスタンプが異なるがハッシュ値が同じ」ファイルは、何か予期しないことが起こっている。念のため異なるファイルとして扱う。サマータイムでタイムゾーンがシフトするケースがまさにこれなのだが、あまり凝ったことをすると色々負担になるのでしない。自分の目でパスの指定間違いなど、万が一のミスをチェックする。おわりに実行するたびに緊張していやな汗がでるが、意図した結果は得られた模様。色々なところに散らばった写真を年単位で一フォルダに重複無く突っ込むことができたので、それをそのままSmugMugにバックアップ。コストパフォーマンスの高かったSmugMugを選んでみたが、どこまで安全なストレージなのかは正直なところ分からない。子供が生まれて最初の一年は、化学的に安定しているというDVD-RWに全てコピーしていた。100GBを越えたあたりから断念。改良の余地があるけど、これが現実解かな。問題Archiveはてなブログをはじめよう!xoinuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。