LinuxサーバーをTime Machineに:macOSのワイヤレスバックアップを快適に実現

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

なぜTime Machineサーバーを自作すべきなのか?

データの価値は、失って初めて気づくものです。Macユーザーにとって、Time Machineは最高の救世主です。しかし、純正のTime Capsuleは高価ですし、外付けのType-Cハードドライブを使うのはケーブルが邪魔で不便です。もし、24時間稼働しているLinuxサーバーやRaspberry Piが余っているなら、今すぐワイヤレスバックアップステーションに変身させましょう。

実際、私は以前、外付けドライブを繋ぐのを面倒くさがったせいで、1週間分のコードをすべて失ったことがあります。専用サーバーを構築してからは, Macが自宅のWi-Fiに接続されるたびに、バックアップがバックグラウンドで自動的に行われるようになりました。手間いらずで、ケーブルの繋ぎ忘れを心配する必要もありません。

どのプロトコルを選ぶべきか:SMBかNetatalk (AFP)か?

macOSにネットワークドライブを認識させるには、主に2つの選択肢があります:

1. Samba (SMB)

これはAppleが推奨している現代的なプロトコルです。しかし、古いLinuxディストリビューションでは、macOSにTime Machineドライブとして正しく認識させるための設定が不安定になることがあります。

2. Netatalk (AFP)

AppleはAFPをレガシーなプロトコルと見なしていますが、Netatalkはバックアップ目的において依然として非常に安定して動作します。macOSの拡張属性を非常によくサポートしており、途中で接続が切れるエラーも稀です。

クイック比較:

  • Samba: 速度は良好で現代的ですが、バックアップアイコンを正しく表示させるためのmDNS/Avahiの設定が少し難しい場合があります。
  • Netatalk: インストールするだけで動作し、Mac向けに設計されているため、長期的なバックアップにおける信頼性が非常に高いです。

この記事では、安定性と初心者への分かりやすさを重視し、NetatalkとAvahiの組み合わせを採用します。

システムの準備

今回はUbuntu/Debianで実施します。CentOSやFedoraを使用している場合は、インストールコマンドを変更するだけで、設定ファイルは同様です。

重要な注意点:OSと同じドライブには絶対にバックアップしないでください。専用のハードドライブまたはパーティションを使用してください。以前、容量制限を忘れた結果、Time Machineがドライブの100%を占有してしまい、サーバーがフリーズしてSSHで修正できなくなったことがあります。

ステップ1:必要なパッケージのインストール

システムを更新し、Macがローカルネットワーク内でサーバーを検出できるように、netatalkavahi-daemonをインストールします。

sudo apt update
sudo apt install netatalk avahi-daemon -y

ステップ2:ストレージディレクトリの作成と権限設定

外付けハードドライブが/mnt/backup_diskにマウントされていると仮定します。専用のディレクトリとバックアップ用のユーザーを作成します。

sudo mkdir -p /mnt/backup_disk/timemachine
# セキュリティのため、rootを避け専用ユーザーを作成
sudo adduser tmuser
# ユーザー tmuser に所有権を付与
sudo chown -R tmuser:tmuser /mnt/backup_disk/timemachine
sudo chmod -R 700 /mnt/backup_disk/timemachine

ステップ3:Netatalkの設定

/etc/netatalk/afp.confを開いてサーバーの設定を行います。

sudo nano /etc/netatalk/afp.conf

ファイルの末尾に以下の設定を貼り付けます。実際のパスに合わせて変更してください:

[Global]
  hostname = My-Linux-Backup-Server
  log file = /var/log/netatalk.log
  log level = logger:info
  zeroconf = yes

[Time Machine]
  path = /mnt/backup_disk/timemachine
  valid users = tmuser
  time machine = yes
  ; 容量制限 (例: 500GB = 512000 MB)
  vol size limit = 512000

なぜこれらの行が重要なのか?

  • time machine = yes: macOSにこれが専用のバックアップドライブであることを認識させます。
  • vol size limit: 非常に重要です。Time Machineは「欲張り」な性質があり、最初に制限をかけないとハードドライブを使い果たしてしまいます。

ステップ4:Avahiの設定(サービス検出)

IPを手動で入力しなくても Finderにサーバー名が自動的に表示されるように、Avahiのサービスファイルを作成します。

sudo nano /etc/avahi/services/afpd.service

ファイルの内容:

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">%h</name>
    <service>
        <type>_afpovertcp._tcp</type>
        <port>548</port>
    </service>
    <service>
        <type>_device-info._tcp</type>
        <port>0</port>
        <txt-record>model=TimeCapsule8,119</txt-record>
    </service>
</service-group>

model=TimeCapsule8,119 という行により、Finder内でTime Capsule特有のドライブアイコンが表示され、非常にプロフェッショナルな見た目になります。

ステップ5:サービスの有効化

以下のコマンドを実行して、新しい設定を適用します:

sudo systemctl restart netatalk avahi-daemon
sudo systemctl enable netatalk avahi-daemon

macOSからの接続

Mac側で以下の手順を行います:

  1. システム設定 -> 一般 -> Time Machine に移動します。
  2. バックアップディスクを追加… をクリックします。
  3. 先ほど設定したサーバー名(例:My-Linux-Backup-Server)を選択します。
  4. ステップ2で作成したユーザー tmuser とパスワードでログインします。

初回のバックアップは非常に大容量(数百GBに及ぶこともあります)になるため、最初はLANケーブルを接続して最高速で行うことをお勧めします。2回目以降はWi-Fiで快適に利用できます。

実際の運用経験

しばらく使用してみて気づいた注意点をいくつか挙げます:

  • ファイルシステム: Linux上では ext4 を優先的に使用してください。NetatalkはNTFSやexFAT上での権限(パーミッション)管理が苦手なため、バックアップエラーの原因になりやすいです。
  • サービスの確認: 突然バックアップドライブが見えなくなった場合は、systemctl status avahi-daemon コマンドを確認してください。多くの場合、このサービスがフリーズしていることが原因です。
  • 速度:

    Share: