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 にはデータを置かない運用をしているからこそチャレンジできる遊びだと思ってください。