そんな今日この頃でして、、、

コード書いたり映画みたり。努力は苦手だから「楽しいこと」を探していきたい。

CentOSサーバにMacバックアップ機能「Time Machine」を構築したよー

現在愛用しているMac book Airも気づけば今年で3年選手。

SSDによる快適さの恩恵なのか普段使っていて問題を感じることはないが、そうはいってもPCの寿命の目安は3年といわれるわけで、そろそろ無バックアップ運用も怖くなってきた。


Macには「Time Machine」という外付けHDDやネットワーク上のストレージに自動で差分をバックアップしてくれる便利な機能がある。

しかし、ネットワーク越しのバックアップ機能を使うには通常はお高いTime Cupsuleを買うか、もしくは互換機能のついたNASを購入する必要がある。

APPLE AirMac Time Capsule - 2TB ME177J/A

APPLE AirMac Time Capsule - 2TB ME177J/A

でも自宅サーバで何とかしたい!


以前、ローカル上でディスクイメージを作成して共有サーバ上に配置する方法も試してみた。

TimeMachineのバックアップ先をNASに設定

確かに最初の数回は上手くバックアップされるものの、気が付くとディスクイメージファイルが破損してバックアップできなくなってしまった。

(バックアップ途中にネットワークが切れてしまうことがあるのが原因ではないかと推定。実運用を考えると厳しい。)


今回新たに別の方法の記事を見つけ、前回チャレンジした時の領域もちょうそのまま残っているので再度挑戦してみた。

Linux に Time Machine 用バックアップサーバを構築する


さて、結論から言うと記事に従えば、ほとんど引っかかるところもなく導入できてしまった。

一応必要だった手順だけ抜き出すと

  1. 元々領域はあったので、/etc/fstabにオプションを追記して再マウント
  2. Netatalkを導入
  3. サーバ各種設定
  4. クライアント設定

になる。

1. マウントオプションの追加

Time Machine用に使用したい領域に下記オプションを追記。

[領域] [マウントパス]                   ext4    defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,user_xattr 1 2

マウント・再マウント・確認。

# umount [マウントパス]
# mount -a
# mount

mountコマンドで表示された領域に、先ほど追記したオプションが追加されていれば成功。

2. Netatlkの導入

必要なライブラリをyumからインストール

# yum install db4-devel
# yum install libgcrypt libgcrypt-devel
# yum install avahi nss-mdns avahi-tools avahi-devel
# yum install libacl-devel
# yum install quota-devel

rpmをダウンロードしてインストール

参考記事のコメントにあるようにrpmからのイントールができる。

Netatalk 3.1.6 SRPMs for Fedora/RHEL/Scientific Linux/CentOS - Netatalk Wiki

(余談だけどVNC越しでブラウジングできるようにChromiumインストールした。今時ブラウザ無いと何かと差し支えるね。

CentOS に Chromium ブラウザをインストールする : まだプログラマーですが何か?

)

3. サーバ各種設定

設定の記述

/usr/local/etc/afp.confにTime Machine用の記述を追加

[My Time Capsule]
path = [パス]
    time machine = yes

あとiptablesを止めるなりポート開けるなり。

サービス開始

# service netatalk start
# chkconfig netatlk on

4. クライアント側設定

とりあえず一度Macbookから領域につないでみる。

$ open afp://[サーバのIP]

あとはTime Machineの設定画面から設定して終了。


初回バックアップは結構な時間がかかるのと、中断してしまうとまた最初からになるので注意!


2・3日運用して現在に至るが、今のところ正常に稼働している。


余談

良い機会なのでgitlabを再インストールした。

前にやったときはえらく苦労した記憶があるけど、今はrpmが用意されている。

GitLab | Omnibus package downloads for GitLab CE

gitユーザが既に存在しているとダメだったり、内部的に8080ポートが使用されてて既存のほうのポートを変更したりといった面倒はあったけど、概ね手順の数コマンドだけで導入できた。

すげー楽。