読者です 読者をやめる 読者になる 読者になる

日々の作業メモ

ライトなインフラエンジニアです

Timemachine用バックアップサーバの構築 (Centos7)

f:id:jimaoka:20151129124711j:plain

TimemachineのバックアップのためにUSBポートを占領されるのはどうも気に食わない。ということで、Timemachineのバックアップ用サーバを立てて、バックアップをWifi経由で行えるようにしました。

使用したOS, ソフトウェア
OS: Centos 7.1
netatalk 3.1.7

Timemachineバックアップサーバ

基本的にはファイルサーバ(AFPもしくはSMB)を構築して、そこにバックアップを取っていくという形になります。

AFPでもSMBでもTimemachineバックアップを取ることは可能なのですが、

  • SMB
    • 毎回バックアップ時に手動マウントが必要
  • AFP
    • ネットワークにつなぐと自動的にバックアップできる

という違いがあったため、AFPで構築することにしました。

ストレージのフォーマット、マウント

まず、外付けHDDをフォーマットします。

コマンドラインであればfdisk、GUIがあるならディスクユーティリティ的なものでフォーマットしましょう。

コマンドラインでのフォーマット〜マウント作業はこのページが参考になります。

Linux CentOS 外付けHDDのフォーマットとマウント

今回は以下のようにマウントしたとします。

### /media/timemachine にマウント
% sudo mount /dev/sdb1 /media/timemachine
### 起動時マウント設定も書く
% sudo vim /etc/fstab
+ UUID=xxxxxxxxxxx /media/timemachine ext4 defaults 0 0

Netatalkのインストール

OSSnetatalkを使用することで、AFPサーバを構築できます。

いまのところ netatalk 3.1.7 が一番新しかったです。
Netatalk 3.1.8 SRPM for Fedora and CentOS - Netatalk Wiki

残念ながらyumには非常に古いのしかない(もしくは存在しなかったような)ので、なんらかの形でビルドして使用する必要があります。

今回はSRPMをダウンロードして、ビルドしてインストールするという形でいきました。

### 依存パッケージのインストール (他にもあるかも)
### ※epelの登録が必要
% sudo yum install rpm-build gcc make db4-devel openssl-devel libgcrypt-devel avahi-devel openslp-server openslp-devel libacl-devel openldap openldap-devel bison cracklib-devel dbus-devel dbus-glib-devel docbook-style-xsl flex libdb-devel libevent-devel libxslt mysql-devel pam-devel quota-devel systemtap-sdt-devel tcp_wrappers-devel libtdb-devel tracker-devel enablerepo=epel
### SRPMのダウンロード
% wget http://www003.upp.so-net.ne.jp/hat/files/netatalk-3.1.7-1.2.fc24.src.rpm
### SRPMのビルド
% rpmbuild --rebuild netatalk-3.1.7-1.2.fc24.src.rpm
### netatalkのインストール
% sudo yum install ~/rpmbuild/RPMS/x86_64/netatalk-3.1.7-1.2.el7.centos.x86_64.rpm ~/rpmbuild/RPMS/x86_64//root/rpmbuild/RPMS/x86_64/netatalk-devel-3.1.7-1.2.el7.centos.x86_64.rpm
### ファイアウォール設定 (548: netatalk, 5353: bonjour/mDNS)
% firewall-cmd --add-port=548/tcp --zone=public --permanent
% firewall-cmd --add-port=548/udp --zone=public --permanent
% firewall-cmd --add-port=5353/udp --zone=public --permanent

設定ファイルの書き換え

設定ファイルを書き換えます。あんまり良く調べてないのですが、こんな感じで動くはずです。

### 設定ファイルの例
% cat /etc/netatalk/afp.conf
;
; Netatalk 3.x configuration file
;

[Global]
log level = defalut:warn
log file = /var/log/netatalk.log
uam list = uams_clrtxt.so uams_dhx.so uams_dhx2.so uams_guest.so

[Time Machine]
path = /media/timemachine
time machine = yes

起動と自動起動設定

あとは起動するのみです。ついでに自動起動設定をしておきます。

### 起動と自動起動設定
% sudo systemctl start netatalk
% sudo systemctl start avahi-daemon
% sudo systemctl enable netatalk
% sudo systemctl enable avahi-daemon

Mac側の設定

システム環境設定から Time Machineを選択し、Select Disk... を押すと先程構築した共有ストレージが表示されます。
(出てこない場合は、bonjour/mDNSあたりの設定がうまくいっていない..?)

f:id:jimaoka:20151129135349p:plain:w400

f:id:jimaoka:20151129135408p:plain:w400

アカウントとパスワードを要求されるので、Linuxのユーザアカウント・パスワードを入力します。

f:id:jimaoka:20151129135423p:plain:w400

ログインが成功したら、バックアップディスクとして、AFPサーバが設定されます。
この後は、サーバを発見すると自動的にバックアップを行うようになります。

f:id:jimaoka:20151129135437p:plain:w400

まとめ

TimeMachineのバックアップ先をLinuxサーバにして、自宅Wifiに繋いだらバックアップが行われるようになりました。TimeCapsuleはこんな感じで動いてるのでしょうか。

あと、初期バックアップはすごく時間がかかる(半日くらい?)ので気をつけてください。