スキップしてメイン コンテンツに移動

無料オンラインストレージを使って、Linux自宅サーバの自己満足的多重セーフ ティなバックアップを考えてみた

そもそもは、この大した記事も投稿していない、自宅サーバのwordpressに、今後も記事を投稿するなら定期的にバックアップを取る仕組みを入れておいた方がいいなって所からいろいろ考え始めたものです。 image

  • 前提となる環境について

現状、我が家のマシンは右図のように、LinuxマシンとWindowsマシン2台がLANを介して繋がっています。 Windowsでは、Dropboxクライアントが動いており、いくつかのファイルはDropboxサーバにデータを保存する形を取っています。

Linuxマシンの方は特にオンラインストレージのバックアップは使っておらず、大事そうなデータは、LinuxマシンとWindowsマシン両方に保存するような形でバックアップを取っており、どちらかのHDDが死んでも、どちらかに残ってるので、データが失われる心配はないな、と考えていました。

ところが、3.11の東日本大震災のような事態が起き。あのような壊滅的な状況など、今まで生活してきて、1mmも想定していませんでした。僕自身被災していないとは言え他人事ではありません。コンピュータを生業としている僕としては、生き伸びてライフラインや建物が復旧できてたしても、プログラムファイルやデータが無いとなると、そこでまた絶望を感じるだろうと想像できます。

そんな事を言うなら、自宅サーバなど使ってないで、例えばwordpressで言うならば、アメーバやlivedoorやFC2などに代表されるブログサービスを使えばいいし、サーバを運用したいならGoogle App EnginやAmazonのEC2などのクラウドサーバを使えばいいのですが、やはり費用対自由度を考えると、自宅サーバかなという結論になりました。まぁ、電気代とか、セキュリティや安定稼働とか、時間的コストを考えたら、クラウド化だろと突っ込まれるかも知れませんが、view数などスズメの涙程度のWebサーバですし、まぁ面白いし勉強になるかなという動機もあります・・・

  • 多重セーフティについて

昨年、探査機はやぶさの帰還で話題になりましたが、不具合に対して「こんなこともあろうかと・・」という想定をしておいて、何重にもリカバリーできるようにしておくことだと解釈してますが、趣味レベルのサーバにそんなもの必要無いだろと、僕自身も思います・・。率直に言えば、先ほどと同じで面白そうだからというのが理由で、もっともらしい理由を考えるなら、
image
ある日、クラウドサービスのサイトを訪れると、 はぁ??という気持ちとは裏腹に、女子が優しく微笑んでるかもしれません・・

要するに、やれDropboxだ!やれEvernoteだ!これからはクラウド化だ!ローカルにデータを持ってる方が危険だ!という昨今ではありますが、じゃー、Dropboxのオンラインストレージサービスが100%安全か?と聞かれれば、右図のようにサービスを停止してしまう可能性は0では無いということです。

まぁ、サービスが停止したところで、別のサービスに乗り換えればいいだけの話ですが、ここで言いたいのは、ちょっと1つのサービスに依存しすぎではありませんか?ということです。

  • 無料で使えるオンラインストレージについて

いろいろあると思いますが、以下のサイトに簡単な特徴が載ってます。

・無料オンラインストレージ・無料ファイル転送比較
http://www.kooss.com/storage/
WS000100
今使っているDropboxに似たサービスで気になったものが、SugarSyncとUbuntu oneです。ここで、僕の環境の何がネックになるかと言うと、自宅サーバ(CentOS)をがあるという点です。SugarSyncは5GBでいろんなプラットフォームに対応しているのに、Linuxだけ・・・

まぁAPIが公開されているので、自分でプログラムを組んで、独自プログラムでSugarSyncへ保存するという選択肢もありますが、さすがにそこまで手を回せない。

Ubuntu oneはLinux OKというか・・・基本的にUbuntuのサービスというこで、僕のデータ資産を管理しようと思うと、現状では、Dropbox1つが満たしてくれてます。

  • どのように多重セーフティへもっていくか?

とりあえず、ボトルネックとなるLinuxマシンが無いものとして、単純に多重セーフティを考えると、WindowsマシンにDropboxとSugarSyncを入れてやればそれでOKです。

しかし、Windowsマシンというのはクライアントパソコンであり、Windowsマシンが起動している間は基本的に何かしら作業をしているということです。例えば、eclipseでプログラミングしながら、ブラウザで調べ物をしつつ、Adobe AireのTwitterクライアントを常駐させるなどをやっており、はたまた、地デジ番組を録画しているかもしれません。そこにDropboxもファイルを監視しています。現時点で少し重くなってます・・そこへSugarSyncを入れると、僕の非力なWindowsパソコンは、作業に支障をきたす重さになることが予想されます。これでは、本末転倒です。

で、そういった、予備のストレージサービスへバックアップを取るのは、裏でこっそりサーバがやってくれるといいですね。このサーバがLinuxではなくWindowsなら、Dropboxでクライアントマシンとサーバマシンを同期させ、サーバだけSugarSyncにも同期させれば、(ストレージサービスは)2重のセーフティと呼べるのではないでしょうか?

が、しかし、Linuxは譲れない・・・

将来的には、Linuxをサポートするサービスが増えてくれるかもしれませんが、現状あるサービスで、無理矢理に答えを考えた結果・・・
image
CentOS → Ubuntu へ・・・



どうせ、僕のCentOSは中身そんなに詰まってないし、移行はそんなに大変でないだろうと・・・それに、Ubuntuも勉強したいという動機もあり、この答えにたどり着きました。

image


で、もう少し具体的にどうするか話を詰めると、まず UbuntuサーバにDropboxクライアントを入れます。これで、Windowsで作業しているデータが、Ubuntu内のDropboxディレクトリへ作成されます。

Ubuntuサーバ内では、同ディレクトリへ、wordpressなどのバックアップデータを作成するバックアップスクリプトを定期的に実行させます。

これで、DropboxのストレージへLinuxのデータも反映されます。

そして、そのDropboxディレクトリの中身をUbuntu one ディレクトリへコピーするスクリプトを1日1回、アクセスの少ない時間帯に、実行するようにしておけば、同じものがUbuntu one ストレージにも反映されます。こうすれば、2つのオンラインストレージサービスへマシンに負荷の少ない状態でバックアップできるのではないでしょうか?

もし、Dropboxが潰れたら、WindowsにUbuntu oneクライアントをインストールすることで、引き続きバックアップ機構は維持できるはずです。

まぁ、そんなDropboxのサービスオワタ\(^o^)/みたいな想定よりも、Dropboxだけ運用してた場合に、データはクラウドにあるぜ!と手ぶらで意気揚々と外出し、訪問先(ネットカフェなど)の人様のパソコンで、Dropboxに繋がらない( ゚Д゚)ヒョエー などというパターンなら、多少現実味があるのではないでしょうか?

力業感は否めないかもしれませんが・・・現実的には、これからLinuxマシンにDropboxを入れて運用するにしても、Ubuntu移行はやらずに、新しくサーバ機を買うことがあれば、Ubuntuを入れて自己満足多重セーフティをやってみたいと思います。

【参考】
SugarSync

■2011/04/21 Thu 追記
似たような趣旨の記事がうpされてた。ここでは、触れてない無料のオンラインストレージについても簡単に特徴が書かれてる。
・複数のオンラインストレージサービスを平行利用して、無料のバックアップシステムを作ろう : ライフハッカー[日本版]
http://www.lifehacker.jp/2011/04/post_1692.html

コメント

このブログの人気の投稿

Javaでprivateなfieldやmethodにアクセスする

JUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。 例えば、次のような対象のクラスがあるとします。 public class ParentClass { private String hoge = "ParentClass!!"; public void dispMsg() { System.out.println("dispMsg:" + hoge); } private void privateDispMsg(String msg) { System.out.println("dispMsg:" + msg); } }

GolangでWindows GUIアプリケーション

GUIアプリ作成の前提 社内ツールとしてexeで配布 開発環境はGoLandを使う 社内ツールとしてexeを配布ということであれば、Visual StudioでC#による開発だと思います。しかしながら、Go言語を習得したいのと、GoLandの補完機能が便利で、Android Studio使っていたこともあり、とっつきやすいという点からGo縛りでGUIアプリケーションを考えたいと思います。 lxn/walk Windows application library kit for Go. Windows向けしか考えていないので、まずこのライブラリなのですが、ボタンやコンボボックスが思ったように並ばなかったり、手軽にイメージボタンを配置したりなど、簡単にレイアウトを変更できない課題に直面しました。レイアウト作成だけで時間を取られてしまいます。そう言えば、Androidアプリ開発のときは、XMLでデザイン部分を切り離してたのを思い出して、今回の調査の運びとなりました。 fyne-io/fyne Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android. walkと比べると、クロスプラットフォームで作成できるのですが、こちらもコードの中にデザインを書いていく形でした。 therecipe/qt therecipe/qt allows you to write Qt applications entirely in Go or JavaScript. Qt Creatorなるものがあるようで、デザイン部分を切り離せる印象はあるものの、最新のPCでもビルドに時間がかかるようで、学習コストもかかるという記事を見かけて断念しました。 どうしたものかとツイートしましたら、下記のようにご助言をいただいた。 同じ課題に対し色々試した結果、PWAのフルキャッシュドに落ち着いた。中身はGo+WASMで。 https://t.co/e60whDTV16 — のぼのぼ📡 (@nobonobo) July 21, 2020 PWA 早速調べてみました。Googleが進めているプロジェクトで、ネイティブアプリのよ

Eclipseの高速化メモ

Eclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。