DockerでTimeMachineサーバを作ってバックアップ

  • 7
    いいね
  • 0
    コメント

みなさんは、バックアップを何でしていますか?

私は最近MBP Late2016を買ってmacOSデビューしました!!!

なので、TimeMachineサーバをDockerで立ててそれをGoogleDriveに保存したいと思います!!

と思っていたのですがマウントすると、どうしても認識してくれないのでGoogle Driveの認証を書いていますが意味ないです。本当にわけがわからない。なんでなの?ねえ。

その前に

今回はローカルでサーバを立ててバックアップを試みたのですが、どうしても接続できなかったので Dplyという2時間だけ無料で使えるVPS上にサーバを立てました。

セットアップ

~ ssh root@IP
$ curl -fsSL https://get.docker.com/ | sh
$ add-apt-repository ppa:alessandro-strada/ppa # Google Driveをマウントする
$ apt-get update
$ apt-get install google-drive-ocamlfuse

Google DriveのAPIを有効にする

Google Driveをマウントするために、Google DriveのAPIを有効にします。

プロジェクトの作成

https://console.developers.google.com/apis/dashboard
にアクセスして、プロジェクトを作成をクリックします。

スクリーンショット 2016-12-15 1.19.31.png

プロジェクト名を入力し「作成」をクリック。
スクリーンショット 2016-12-15 1.20.18.png

APIの有効化

ダッシュボードに移動できたら、「APIを有効にする」をクリックして、
スクリーンショット 2016-12-15 1.21.01.png

Google Drive APIのAPIを有効にします。
スクリーンショット 2016-12-15 1.21.13.png

認証情報の作成

まずは、OAuth 同意画面を作り「サービス名」を適当に入力します。
スクリーンショット 2016-12-15 1.22.20.png

認証情報を作成します。「OAuth クライアント ID」をクリックします。
スクリーンショット 2016-12-15 1.21.45.png

アプリケーションの種類には「その他」を選択して、作成します。
スクリーンショット 2016-12-15 1.29.16.png

すると「クライアント ID」「クライアントシークレット」が生成されます。
スクリーンショット 2016-12-15 1.29.57.png

Google Driveへのアクセス許可

$ google-drive-ocamlfuse -headless -id クライアントID -secret クライアントシークレット

と入力するとGoogleのOAuth認証を求めるURLが表示されるので、アクセスします。

スクリーンショット 2016-12-15 1.35.27.png

許可しましょう。
スクリーンショット 2016-12-15 1.38.59.png

コピーしましょう
スクリーンショット 2016-12-15 1.39.05.png

コンソールに戻ってコードを貼り付けて
Access token retrieved correctly と表示されたら成功です!

マウント

$ mkdir /googledrive
$ google-drive-ocamlfuse /googledrive
$ mkdir /googledrive/timemachine

Google Driveでも「timemachine」フォルダがあることが確認できると思います。

netatalk を立てる

netatalkとは

netatalkはUnix系OS上でMac OSやOS Xに対してAFPによるファイルサーバの機能を提供するオープンソースのソフトウェアである。
https://ja.wikipedia.org/wiki/Netatalk

つまりファイル共有サーバの機能を提供するわけですね。

起動する

docker run --detach \
   # --volume /googledrive/timemachine:/media/timemachine \ -> これだと認識してくれない
   --publish 548:548 \
   --env AFP_USER=$(id -un) \
   --env AFP_PASSWORD= \
   --env AFP_UID=$(id -u) \
   --env AFP_GID=$(id -g) \
   --name netatalk \
   cptactionhank/netatalk:latest

Finderで CMD + K を押して afp://IPアドレス で接続します。
スクリーンショット 2016-12-15 1.55.34.png

設定したパスワードとユーザでログインします。
スクリーンショット 2016-12-15 1.55.50.png

Time Machineを選択してOKをクリックします。
スクリーンショット 2016-12-15 2.51.50.png

するとTime Machineの設定にもでてくるはずです。
スクリーンショット 2016-12-15 1.56.40.png

まとめ

どうしてGoogle Driveをマウントしても認識してくれないのだろう。
(コンテナの中を見に行くとちゃんとマウントはできているみたい)
今後は、gcsfuseとかを使って挑戦してみたいです。