gentoo 上の samba サーバーに TimeMachine Backup を作る

昨年末に購入した MacBookAir 2018 なんですが、homebrew やら docker やらを突っ込んで開発環境的な使い方をしている関係上、壊れやすい気がする(というか、1回壊した)んですよね。なので TimeMachine Backup ぐらいは取っておこうと USB HDD 1個買って繋ぎっぱなしにしていたんですが……邪魔なんですよねw せっかくのラップトップなのに、USB ハブと 2.5“ USB HDD が場所を取るし、ちょっとケーブル引っこ抜いて場所を移動……なんてことをするのにいちいち USB HDD をアンマウントするって一手間がものすごくメンドくさかったり。

なので、wifi 経由で自宅 samba サーバーに TimeMachine Backup を作ってみました。

  • linux-4.19.27-gentoo-r1
  • samba-4.8.6-r2
  • avahi-0.7-r1

samba-4.8.5 は vfs_fruit にバグがあるみたいなので注意した方が良さそうです。 2019/04/23 時点で gentoo の stable は 4.8.6 になっているので、あんまし気にする必要はないかもしれませんが。

https://bugzilla.samba.org/show_bug.cgi?id=13441

avahi は試行錯誤の中で入れてみただけなので、もしかしたら不要なのかもしれません。samba と avahi の USE フラグは以下のとおりで、たぶんデフォルトのままです。

# emerge -pv samba avahi

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] net-fs/samba-4.8.6-r2::gentoo  USE="acl pam syslog system-mitkrb5 -addc -addns -ads -ceph -client -cluster -cups -debug (-dmapi) -fam -gnutls -gpg -iprint -ldap -python -quota (-selinux) (-system-heimdal) -systemd -test -winbind -zeroconf" PYTHON_TARGETS="python2_7" 0 KiB
[ebuild   R    ] net-dns/avahi-0.7-r1::gentoo  USE="gdbm introspection ipv6 nls -autoipd -bookmarks -dbus -doc -gtk -gtk3 -howl-compat -mdnsresponder-compat -mono -python -qt5 (-selinux) -test" PYTHON_TARGETS="python2_7" 0 KiB

Total: 2 packages (2 reinstalls), Size of downloads: 0 KiB

やったことの記録です。合っているかどうかはわかりませんが、とりあえずこれで動いてます。

ボリューム作成

普通に lv 作って ext4 でフォーマットしてマウントします。マウントポイントは好きにして良いし、別に lv 切らないならそれもアリだと思います。

# lvcreate -L128g -n lv005 vg001
# mkfs.ext4 -Ltimemachine /dev/vg001/lv005
# mount /dev/vg001/lv005 /mnt/primary/timemachine

ボリュームを作る場合は /etc/fstab の設定も忘れずに。

ユーザー作成

TimeMachine Backup 専用の linux アカウントを作成して、さらに smbpasswd で samba 経由でアクセスする smbuser に紐付けます。

# useradd --no-create-home --user-group --shell /sbin/nologin --comment 'macbook' mac
# smbpasswd -a mac
New SMB password: <password>
Retype new SMB password: <password>
Added user mac.

パーミッションの設定

TimeMachine Backup 先のディレクトリに書き込みできるように設定します。

# chown mac:mac /mnt/primary/timemachine
# chmod 700 /mnt/primary/timemachine

smb.conf の設定

必要な部分だけ抜粋。

/etc/samba/smb.conf

[global]
  fruit:aapl = yes
  fruit:model = MacSamba

[timemachine]
  comment = Time Machine
  path = /mnt/primary/timemachine
  browseable = yes
  writable = yes
  create mask = 0600
  directory mask = 0700
  spotlight = yes
  vfs object = catia fruit streams_xattr
  fruit:aapl = yes
  fruit:time machine = yes

fruit:aapl は global option なのでたぶん [global] にだけあれば大丈夫です…… samba-man ちょっと試行錯誤の中で両方に書いてしまったので、うちの環境ではそのまま残しちゃいましたが。

設定を書き換えたら、samba を再起動します。

# /etc/init.d/samba restart

smb.service の設定

avahi の設定です。不要かもしれないのですが、今回やったことなので一応書いておきます。ちなみにこのファイルは新規に作成します。

/etc/avahi/services/smb.service

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

作成したら反映させます。

# /etc/init.d/avahi-daemon restart

MacBook 側の設定

ここまでで、たぶん Mac 側からもこのボリュームが見えるはず。Finder で [Command]+[K] して smb://<host or ip-addr>/timemachine とか入力すれば入れると思います。同時に「TimeMachine 環境設定」の「ディスクを選択…」にも現れるんじゃないかと……

うちでやった時は samba サーバー側で /mnt/primary/timemachine のパーミッションの設定をミスっていたからなのか「ディスクを選択…」に現れませんでした……色々とあーでもないこーでもないを繰り返して、結局 Mac 側でこんなコマンドを打って認識させました。

$ sudo tmutil setdestination 'smb://<host or ip-addr>:<password>@mac/timemachine'

ちなみにディスクのアイコン……というか見た目は smb.conf の fruit:model で変えられるみたいです。

とりあえずうちの環境ではこれで TimeMachine Backup が取得できているように見えますが、リストアしたことがないのでちゃんと取得できているかどうかは不明です……もともと MacBook にはデータを置かない運用をしているからこそチャレンジできる遊びだと思ってください。

  • wiki/linux/timemachine-destination-on-samba-on-gentoo
  • 最終更新: 2019/04/23 16:48