19
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RaspberryPiでTimeMachineに対応したsambaサーバを立てる

Last updated at Posted at 2020-01-23

RaspberryPi + Samba (+ Avahi)でMacのTimeMachine用のサーバを立てる記事です。
RaspbianのバージョンがBusterになってから簡単にサーバを立てられるようになりました。
自分用のメモとして残しておきます。

TL;DR

事前にhogeというユーザがシステムに追加されているとします。
下記の<ここでパスワードを入力、表示されません>でファイルサーバに使うパスワードを入力してください。

$ sudo apt install samba avahi-daemon
$ sudo smbpasswd -a hoge
New SMB password: <ここでパスワードを入力、表示されません>
Retype new SMB password: <ここでパスワードを入力、表示されません>
Added user hoge.

/etc/samba/smb.confに下記の設定を追記します。

/etc/samba/smb.conf
[TimeMachine]
   comment = RaspberryPi TimeMachine Folder
   path = /mnt/TimeMachine
   writable = Yes
   browsable = Yes
   vfs objects = catia fruit streams_xattr
   fruit:metadata = netatalk
   fruit:encording = native
   fruit:time machine = Yes
   fruit:time machine max size = 1T

/etc/avahi/services/samba.serviceを下記の内容で作成する

/etc/avahi/services/samba.service
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
 <name replace-wildcards="yes">%h</name>
 <service>
   <type>_adisk._tcp</type>
   <txt-record>sys=waMa=0,adVF=0x100</txt-record>
   <txt-record>dk0=adVN=TimeMachine,adVF=0x82</txt-record>
 </service>
  <service>
    <type>_smb._tcp</type>
    <port>445</port>
  </service>
</service-group>

最後にRaspberryPiを再起動してください。

説明

必要なパッケージをインストール

$ sudo apt install samba avahi-daemon

ファイルサーバの機能を提供するsambaとネットワーク上にサーバの存在を通知するavahi-daemonをインストールします。インストールされるsambaのバージョンはおそらく4.9以上になると思います。

最近のmacOSでは対応したファイルサーバであればSMBでもTimeMachineが使えるようになりました。
Sambaではバージョンが4.8以降でTimeMachineに対応したようです。
そしてRaspbianではbusterから安定版がsamba4.9以降になったようです。1
(Debianのパッケージ検索から確認しましたがRaspbianと同じだと考えられます。)

ファイルサーバにアクセスできるアカウントを追加する

$ sudo smbpasswd -a hoge
New SMB password: <ここでパスワードを入力、表示されません>
Retype new SMB password: <ここでパスワードを入力、表示されません>
Added user hoge.

smbpasswdコマンドを使ってアクセスできるアカウントを追加できます。事前にシステムに登録されていることが条件なのでデフォルトのまま使う場合はpiアカウントを追加してください。
登録時にパスワードを聞かれるのでファイルサーバにアクセスするときに使うパスワードを入力してください。(確認のため2回聞かれます。)

利便性を上げるために安全性を犠牲にするならば後述のsambaの設定でguestアカウントを許可することもできます。その場合smbpasswdを実行する必要はありません(guestアカウントを使用するため)。しかしバックアップを暗号化しないのであればguestを有効にすることは避けてください。

Sambaの設定を変更する

/etc/samba/smb.confに下記の設定を追記します。

/etc/samba/smb.conf
[TimeMachine]
   comment = RaspberryPi TimeMachine Folder
   path = /mnt/TimeMachine #マウントしたドライブのパスを指定
   writable = Yes
   browsable = Yes
#   guest ok = Yes
   vfs objects = catia fruit streams_xattr
   fruit:metadata = netatalk
   fruit:encording = native
   fruit:time machine = Yes
   fruit:time machine max size = 1T #ドライブ全体を使っていい場合はこの行を削除

上記ではTimeMachineという共有フォルダを設定しています。
[]の中に共有フォルダ名を指定できます。
各オプションの意味は下記の通りです。2 3

オプション名 意味
comment 共有フォルダの説明
path サーバ上の共有するディレクトリのパス
writable 書き込みを許可
browsable フォルダを表示する(フォルダを隠さない)
guest ok ゲストでのアクセスを許可
vfs objects 使用する仮想ファイルシステムモジュールを指定
fruit:metadata どこでメタデータを保存するか
fruit:encording ファイル名で互換性のない文字をどう処理するか
fruit:time machine TimeMachineをサポートする通知をするか
fruit:time machine max size TimeMachineで使えるディスクの容量

TimeMachineの設定をしている重要なポイントは上記設定の下5行分です。他は通常のSambaの設定と変わりません。

mDNSの設定をする

/etc/avahi/services/samba.serviceを下記の内容で作成する

/etc/avahi/services/samba.service
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
 <name replace-wildcards="yes">%h</name>
 <service>
   <type>_adisk._tcp</type>
   <txt-record>sys=waMa=0,adVF=0x100</txt-record>
   <txt-record>dk0=adVN=TimeMachine,adVF=0x82</txt-record>
 </service>
  <service>
    <type>_smb._tcp</type>
    <port>445</port>
  </service>
</service-group>

LAN内での名前解決に使用するmDNSを設定します。これを設定することで簡単にファイルサーバにアクセスできます。mDNSはAvahiというパッケージを使用します。

8行目のTimeMachineの部分はsambaで設定した共有フォルダ名と一致させてください。

最後に再起動する

もしくは

sudo systemctl restart smbd
sudo systemctl restart avahi-daemon

でも構いません。(avahi-daemonは再起動すら必要ないかもしれないです。)

うまくいかないときは

操作を完了できませんでした。(OSStatusエラー-1073741275)

Sambaで設定したフォルダ名とavahi-daemonで設定した共有フォルダ名が一致していない可能性があります。4
MacにTimeMachineに対応したTimeMachineという共有フォルダがありますよと言っておきながら実際にはなくて共有フォルダにアクセスできないことが原因です。

選択したネットワーク・バックアップ・ディスクで、必要な機能がサポートされていません。

上記のエラーが発生した場合はSambaの設定がきちんとできていないか残念ながらバージョンが古い可能性があります。
インストールされているsambaのバージョンを確認したり、設定を見直したりしてみてください。

あとがき

この記事の内容はRaspberryPiでは未検証です。あくまでも多分動くかもしれないということで参考までにお願いします。というのも現在手元にRaspberryPiと外付けHDDがないためテストできていません。ただ、上記の内容はRaspbianと構成が近い、Debianでテストしているためおそらく上記でもうまくいくと思います。テストできたら改めて更新します。

RaspberryPi4を使って導入できることを確認しました。

わかりにくい表現、間違いなどがあればご指摘いただければ幸いです。

余談

今回は強い思いがあるので聞いてください。(つまり聞かなくて大丈夫です笑)

MacBook Proをバックアップする際にいつも週1でUSBの外付けHDDにバックアップしていました。
あちこち持ち歩くことも多くあり、また週1のバックアップでは少し心配だったこともあり、
(もっとこまめにバックアップを取っていれば数時間前のファイルに戻せたのに!ということがちょくちょくあり…)
ファイルサーバを立ててネットワーク経由でこまめにバックアップしたいななんて思っていたところ何と
USB3.0、GigaBit対応のLAN、おまけにメモリ最大4GBという求めていたもの全てが入ったRaspberryPi4が発表されました。
これはもうやるしかないということで待ちきれずにサーバの構築手順を確認したわけですが、肝心のRaspberryPi4はいつ日本で発売になるのでしょうか…

(ちなみにこれをイントロに書こうと思ったのですが、思った以上に長くなってしまったので後ろに持ってきたのはここだけの話です。)

Reference

  1. https://packages.debian.org/samba

  2. https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html

  3. https://www.samba.org/samba/docs/current/man-html/vfs_fruit.8.html

  4. https://superuser.com/questions/1342391/osstatus-error-when-trying-to-tell-time-machine-to-use-external-server-as-backup

19
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?