kenkino’s diary

おそらく技術・グッズ・自転車系 ※当ブログは、Amazonアソシエイトやその他アフィリエイト等の収益メディアを表示しております。

raspberry pi でMacのバックアップサーバを作ってみる

内容

Macのバックアップどうしてる?

現在、自分使いのメインPCはMacBook Proで色々活用しているといった具合で、色々と便利なのではあるが「ちょっとここら辺どうしよう?」という部分もなくはない、その内の一つとしてあるのが現在使っているデータ等のバックアップである。

Mac公式では

macOSにはTimeMachineというバックアップ機能があり、外付けストレージもしくはmacOSのバックアップに対応しているNASをバックアップの対象に指定すれば、自動的に現在使っているmacOSの情報を定期的にバックアップする仕組みがあり、トラブルでMacにOSからインストールしなければならない場合でもTimeMachineでバックアップを取ってあれば復元できるという便利な機能である。

しかし、外付けストレージは据え置きの型のiMacMac Proならいいが、MacBook系で頻繁に持ち運ぶ場合、一旦外付けストレージをOSから取り外し&物理的に取り外してて持ち運ばないと何かの拍子にストレージが外れた場合、ストレージ内のアクセス情報に問題が生じてアクセスできなくなったり、書き込み途中のデータ情報の矛盾が生じてデータが読めなくなったりHDDの場合だとごく稀にヘッドが記録面に接触してに破損するすることがある。

SSDなら機械的な動作機構もないので大丈夫だろう」と考える方もいるかもしれないが、書き込み途中でストレージが外れてしまった場合のデータ情報の矛盾については状態が小規模であれば修復してアクセスするのだが、それらが修正しきれないものになるとのOSがそれを検知した時点でストレージを読まなくなることが多いのでSSDでも結構危険だったりする。

Windows に関しては最近抜き差ししても問題ないということをアナウンスしているようだが、アクセスを行っている際に抜き差しするとやはり問題があるようなのでやはりUSBで接続したストレージデバイスは雑に扱わない方がいいだろう。

ということでUSBメモリースティックとかではともかく、ケーブル経由で繋いでいるストレージだと何かの拍子にケーブルが外れる場合もあり、持ち運びを考えるとちょっと手間だったりする。

かといってNASを使おうとすると、バックアップだけではなく他の用途に使いたくなったりするのが人情で、そうなると選択に困ってしまうという事もあるかもしれない。

丁度いいのがないなら作ってみよう

「一々ストレージ外すのも面倒くさいし、かといってNASをバックアップに使うのはなぁ」と思っていたのだが自宅に何も使っていないRaspberry Pi 4が転がっており、「これにUSBストレージ繋いで使うとよくないか?」ということでRaspberry Pi 4でMacBook Proのバックアップサーバーを作ってみよういうことで情報を集めていたところお手軽そうな方法があったので、その方法を元に作ってみることにした。

qiita.com

これから説明となる前に最初に断っておくが、これは自分の環境でこのようにすれば動作したという記録なので挑戦する場合は自己責任ということでお願いしたい。

まず必要なものとしては、これらになる。

Raspberry Pi 4 : 今回使ったのは自宅に転がっていた2GBモデル

USB接続ストレージ : 自分が使っているMacのストレージの2倍の容量のモノを用意

Raspberry Piについては3までは、USBは2.0でLANについては100MbpsでLANについてはまぁまぁといったところだったがUSBについては、遅くはないが100GB以上を保存するとなるとどうだろうといったところではあった。

しかしRaspberry pi4になってからLANは1Gbps、USBも3.0となりその部分の心配はあまりせずに使えるものになってきている、これくらいの性能だとちょっとした用事を済ますためのPCとしても使えそうで、今後そういう用途で使い始めるところも出てくるだろうと思う。

USBストレージについては、大昔からある「バックアップデバイスはPC内蔵ストレージ容量の2倍の容量を用意すべし」という原則に基づき内蔵ストレージ容量の2倍サイズのUSB3.0接続モバイルHDDを用意した。

予算を注ぎ込めるのであればUSB3.0接続のモバイルSSDでも良いかもしれないが、一つご注意を。

最近通販でTBと表記があっても実際の容量はかなり少ないSSDバイスが出回っており、しかも大手通販サイトで頻繁に掲載されているため購入する際は注意が必要になる。

見分けるポイントとしては、通販サイト内でブランドメーカー(ウェスタンデジタル(WD)、SanDisk、Crucial等)の同じ容量の製品の10分の1くらいの価格で出ており、ブランドメーカーの同容量の製品と比べて異常に安いのならその製品は購入を見合わせた方がいいだろう、判断を付けられる自信がない場合は家電量販店で購入するのが確実である。

USBストレージの初期設定

まずは、USBストレージを接続、Finderを立ち上げて

  • アプリケーションをクリック
  • 一覧の下にある[ユーティリティ]をクリック
  • 表示される一覧から[ディスクユーティリティ]をダブルクリックして起動

ディスクユーティリティを開いたら接続されているUSBストレージをクリックして[消去]ボタンをクリック。フォーマット形式は[Mac OS 拡張(ジャーナリング)]を選択して[消去]ボタンを押して消去とフォーマットを行う。

消去後、FinderでUSBストレージを右クリックして情報を表示してデバイスの書き込み権限で「everyone」に対して「読み/書き」の権限を設定した後USBストレージを取り出す。

raspberry pi の設定

Raspberry pi 4についてはmicroSDraspberry pi OSを書き込んで起動し、セキュリティやネットワーク等について設定しておく

パッケージのインストール

設定が終わったら下記のコマンドでパッケージをインストール

# apt install avahi-daemon
# apt install hfsprogs hfsplus ←Macでフォーマットしたストレージの中身を閲覧できるようにするパッケージ
# apt install netatalk ←Macで使われるネットワークファイルシステムサーバーとして動作するパッケージ

USBストレージの接続設定

USBストレージのマウント用ディレクトリを作成する。

# mkdir /media/timemachine ←USBストレージマウント用ディレクトリ

その後raspberry pi にUSBストレージを接続して 下記コマンドでUSB HDDのIDを確認

$ blkid

表示されたストレージ一覧でhfsplusと表示されたストレージのIDを控えて /etc/fstabに記述する

UUID=USBストレージのID  /media/timemachine  hfsplus force,rw,user,auto,nofail 0 0
             ↑マウントするディレクトリ

下記コマンドを実行したあと

# mount /media/timemachine

下記コマンドの表示で /media/timemachineが表示されていれば問題はない

# df 

その他の設定

これまでの作業が終わったら下記ファイルを作成・設定する

/etc/netatalk/afp.conf 一番最後の行にTimeMachineとして使うディレクトリとTimeMachineとして使用可能とする設定を入れる

[TimeMachine]
  path = /media/timemachine
  time machine = yes

/etc/nsswitch.conf hostsの行にmdns4とmdnsを追加(mdns4はいらないかもしれない)

# hosts:          files mdns4_minimal [NOTFOUND=return] dns
hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns

/etc/avahi/services/afpd.serviceというファイルを作成、内容についてはqiitaの記事にあった通りにした。

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!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=TimeCapsule</txt-record>
    </service>
</service-group>

サービス起動

これまでの設定が終わったらサービスを起動してみる

# service avahi-daemon start
# service netatalk start

サービスのステータスを確認してactiveであれば動作している

# service avahi-daemon status
# service netatalk status

下記コマンドで raspberry pi 起動時にサービスが起動するようになる。

# systemctl enable avahi-daemon
# systemctl enable netatalk

使ってみる

Qiitaではraspberry piへ接続するという作業が必要とあったが、自分の環境ではraspberry pi でサービス起動後Macの方で見つけて接続できたので下記の作業を行なった。

  • Macの「システム設定」→「一般」→「Time Machine」でバックアップの設定を開く
  • +をクリックしてraspberry piにマウントしたディスクが出てくるのでバックアップ用に設定

しばらくすると、バックアップ用に指定したディスクにバックアップが開始される。

といったところで、これらの設定で raspberry piMac用のバックアップサーバとしての構築は完了である。

しかし、現在このような構成を組もうとするとRaspberry pi 自体が品薄なのに加えて価格が高騰しており、USB接続のストレージやその他の手間を考えると安いNASを購入してMacのバックアップ専用にした方が良いかもしれない。

自分の場合、たまたま自宅にRaspberry pi 4があり、USBストレージも何故か安く手に入ったのでやってみたといったところだが、こういうことをすることにより色々とOSやストレージ・ネットワークの勉強になる面もあるので、挑戦したい方はやってみるのが良いのではと思っている。

しかし先日この報告をとあるLinuxユーザーズグループに出した際「Sambaを使った方がいいのでは?」という指摘もあり、こちらの方も機会があったら挑戦してみようかと考えていて、それが成功した場合そちらの方も報告しようかと思う。