ようやく、オンラインバックアップの構成が落ち着いた感じだ。自分でも予想していなかったのだが(でも、いつものことだw)、いろいろな問題が起こって二転三転して、想定外の結論になった。予想外に時間が掛かったし、今後も何かあるかも知れないので、早目に着手して良かった。それにしても、いつものことながら、予想外に疲れた。
結局、僕にはDuplicacyというオンラインストレージ対応のバックアップソフトとBackblazeのオンラインストレージB2 Cloud Storageを組み合わせるのが費用対効果で最適となった。バックアップするデータ量を減らして350GB程度(ストレージでのデータ量)にしたので※、少し余裕を見ても、月額US$2(年間2600円)程度になる見込みだ。(去年終了した)CrashPlanの個人プランは(いくらだったか忘れたが、調べたら)月額US$5だったので、従来の半分以下に(年間4千円程度も)減らせそうだし、後継のビジネスプランは月額US$10なので、来年継続するよりも大幅に安い。
※減らしたのは音楽データである。そのほとんどはCDを取り込んだもので、基本的には、データがなくなっても再度取り込めばいい。ところが、実際問題として、全部なくなった時に再度数百枚のCDを取り込む気にはなれない。が、今はSpotifyがあるから、そこにあるものはそれで聴けばいいだろうと考えた。
すると、バックアップが必要なのは、(ほんのわずかにある)自分の演奏や昔のカセット・LPなどからの曲やダウンロード購入したものや、手持ちやレンタルしたCDのうちSpotifyにないものだけとなるので、そういう曲を選別した。選別は、スクリプトを作って自動判別しようと思ったが、作るのが面倒だったので、手でアーティストごとに検索した。つもりだったが、実際には手持ちのCDについては調べてなかった。それは大変だ。。。やっぱり、お金に任せて全部バックアップするのがいいのかも知れない。
良く考えると、オンラインバックアップからしかリストアできない場合というのは、災害などでPC本体はおろか外付けHDDもなくなってしまった状態だろうから、そんな時はCDだってないだろうから、取り込み直すことはできない。また、Spotifyのレパートリーかどうかで分類すると、別のサービスに乗り換えたら再度分類する必要が出て煩雑だ(これはベンダーロックインのようなものだ)。そうすると、全部バックアップするか、全然しないか、特別なもの(例: 再入手不可能なもの)だけするかになる。全部はいかにも無駄なので、特別なものだけバックアップするのが良さそうだ。そういうものは果たして何枚あるだろうか? (調べるのはおもしろそうだ) → 結構な数になった。めぼしいもの112アルバム(約19GB)を追加バックアップしたら、B2の総データ量は410GBになった。 (8/12 4:14記)
なお、ストレージでのデータ量は圧縮されているため、元のデータ量はもっと多い。今の構成にする時に計算し直さなかったのだが、500GB程度はあるはずで、それが350GB程度までに減ったのはどうも信じられない。Duplicacyの性能がいいのかも知れないが、バックアップ対象設定の誤りで抜けがないか心配なので、追って確認したい。 → バックアップされたファイル一覧で確認したら、問題なかった。今回の構成にする時に更にデータ量を減らしていた。 (8/12 4:14記)
仮に従来と同じデータ量(1TB程度)をバックアップすることにした場合でも、月額US$5.1(年間6800円)程度となり、今までのCrashPlan(個人プラン)と同等になるから、しばらくは実際に掛かった料金を見ながら検討したい。
なお、Duplicacyはファイル変更の履歴を保存できるため、データ量が想定以上に増えないかやAPI実行回数が異常に増えないかの監視が必要だ(どちらも料金が増える原因のため)。
それにしても、バックアップソフトにDuplicacy, Duplicati, Duplicityと、似たような名前のものがいくつもあって、大変紛らわしい。"De-duplication"(重複排除)から来ているのだろうが、最初はどれだったのか気になる。どうでもいいことだが。
それはともかく、試したほとんどのソフトが(機能・性能・安定性の点で)まともに使えなかったのは全く嘆かわしい。Linuxで使うのにシンボリックリンクに対応していないもの、変更のスキャンや転送やリストアや変更履歴の整理(prune)が遅過ぎるもの、スリープ(からの復帰)に対応していないもの、処理を中断すると管理データが壊れるなど堅牢性や安定性に欠けるものなどがあった。僕の環境や使い方が特殊だとは思えないので、細かいことをちゃんと考えて作っていないのだろうか。バックアップソフトでそれは困るのだが・・・
そういう点で、Duplicacyは信じられないほど期待通りの機能・性能(「まとも」)なので感心している。転送速度が安定して高速(おそらくCrashPlanの10倍以上)なのはいいし、初回のバックアップは別として、その後のスキャンもpruneも高速かつ負荷が低い(おそらくCrashPlanの1/5以下)ので、定期実行するにはとても良い。いつものことだが、しつこく探してダメ元で試して良かったw そして、コマンドライン版が無料なのは大変ありがたい。コマンドの使い方が独特なので、GUIの方が楽だったとは思うが、設定が確定した後はGUIの価値はないので、毎年お金を払うよりはいいと思う。
運用の話を書くと、バックアップは6時間ごとに自動で行わせている。バックアップ間隔を短くする価値があるのか良く分からない(今は趣味だけなので、おそらくない?)ので、しばらく状況をみて調整したい。変更履歴は、1週間までは毎日1個、1か月(30日)までは1週間に1個、1年(360日)までは30日に1個残すことにした。これも、どういう設定がいいのか良く分からない。ただ、今まで、履歴を使ったことや欲しかったことがほとんどない(そもそも、オンラインからリストアしたことがほとんどない)ので、多くを保存する必要はない気はする。変更履歴の整理(prune)間隔は1日に1回とした。
バックアップの履歴の必要性について個人的な考えを書くと、おそらく、履歴は要らない。プログラムなどの開発の時に使う、gitなどのバージョン管理システムの方がずっといい。というのは、定期バックアップはいつ実行されるか不明なので、残っているものが必ずしも有用なもの(「欲しかったもの」)とは限らないからだ。手動で実施するにしても、忘れたり間隔が長くなり過ぎる可能性がある。それなら、キリのいい時に自分で(gitなどに)コミット(保存)した方がずっといい。コミット時にコメントも付けられるから、それがどういうものかも分かる。そして、そのリポジトリをバックアップしておけば、安心だろう。
あと、プログラムじゃないもの(例: システムの設定ファイル)については、「あ、やっちゃった!」と思ったら、そのファイル内にコメントとして残しておいたオリジナルに戻すか、記憶で戻すか、あらかじめ保存しておいたファイル(例: *.orig)に戻すか、すぐにバックアップ(もしあれば)から戻すか、再度作り直すかするかwするので、やっぱり履歴は要らない気がする。この場合は、バックアップ自体が役に立たないことが結構ある。
まあ、履歴に慣れ親しんだ人だと効果的に使えるのだろうけど、履歴に頼り過ぎてしまうと、過酷な環境では生きて行けなくなってしまうからw、余り良くないと思う。 (8/12 17:04)
少し話が逸れるが、運用に関連しているので書くと、このブログサーバのバックアップも、最終的にはB2にするようにした。今までは、週一回、PCの外付けHDDにバックアップするだけだったが、今回から、週一回のバックアップをPCの内蔵HDDに行い、そこを外付けHDDとDuplicacyのバックアップ対象にしておき、その後の定期バックアップでB2に送るようにした。実は、サーバにもDuplicacyを入れれば直接B2にバックアップすることが可能だが、サーバにB2のアカウント情報を入れるのは不安なので、このように間接的なことをしている。
実装の話になるが、バックアップなどを定期的に実行するのにはcrontabを使っている。crontabを使う際の問題として、スリープからの復帰後に、スリープ中に行われるべきだったスケジュールが実行されないために※、スリープ中にスケジュールがあると、最長6時間、バックアップが遅れる。そのため、バックアップコマンド(スクリプト)を2時間ごとに起動して、最長(6時間でなく)2時間の遅れで、スリープ中に行われるべきだったバックアップが行えるようにした。そして、そのコマンドの中で、前回からのバックアップやpruneからの経過時間が最小間隔(例: 6時間、1日)より短い場合には何もしないようにして、バックアップ間隔を維持するようにした。なお、コマンド起動間隔の2時間は1時間でも30分でもいいが、そこまで厳密でなくていいので、長目にした。
※実際の動作を見たら、スリープ中に行われるべきだったスケジュールは必ずしも実行されない訳ではなく、スリープからの復帰後に実行される場合がある(例: スリープ中だった14:04のスケジュールが復帰後の15:08に実行された)。ただ、実行されない場合もあったので、その違いが良く分からない。スリープが長時間で、複数回のスケジュールが飛んだ場合は実行を諦めるのだろうか。あるいは、復帰した時刻と実行すべきだった時刻の差で判断しているのか。あるいは、僕の思い違いで、最後に飛ばされた1回は必ず実行されるのか。マニュアルに書いてあるのかも知れないが、無精なので調べていない。 (8/12 16:10)
それから、仮にバックアップ処理が6時間以上に長引いた場合や間違って実行した時に複数のバックアップ処理が同時に実行されるのは良くないので、既に実行中の場合に後から実行したものは何もしないで終わるようにした。こういうのはGUIだと何も考えずに対処されるのだろうが、Linux版がないので仕方ない・・・
余談だが、光回線が予想以上に優秀で、上下同時に使ってもどちらも80Mbps以上出たので感心した。あと、今は基本的に転送データ量での速度制限はしない(以前、「混雑した時に制限するポリシーに変更した」という連絡があった)ようで、数日間、断続的に80Mbps前後でアップロードし続けていても大丈夫だった(いつ警告が来るか心配ではあったがw)。
(8/12 16:36 若干、加筆・修正; 2023/8/3 6:40 関連ページにアクセスが増えているので、期限切れで非公開にならないようにした。)