Time MachineでのバックアップをNASを使わず無線にしたい!!【CentOS 8 & Samba】
注意事項(2021/12/19追記)
この記事の内容は古くなっています。
特にCentOS Linuxは2021年末でEOL(サポート終了)になります。
現在、僕は仮想OS上でのSambaをやめ、サブPCに直接Ubuntuを入れてそのままSambaサーバを立てて使っています。
でもまあこの記事もTime Machine用ディレクトリの作成以降は多少参考になるのではと思います……。
はじめに
macOSに付属するバックアップ機能「Time Machine」を無線で使いたい!!!
でもNASを買うのはお金がかかるので嫌だ!!!!
というわけで、Linux(CentOS 8)のSambaを使ってTime Machineに対応したファイルサーバーを立てることができるとの情報を得たので試してみた記録です。
ついでにWindowsからアクセスできるようにもします。
全部やってから備忘録として残すために書いてる記事なので、書き忘れてる情報があったりとかそもそも間違った設定をしてる可能性があったりします。
書いてる僕もLinux初心者なので、なにか気付いたこと等があればコメントとかで教えていただけるとありがたいです。
また、この記事を参考にする場合は自己責任でお願いします。
- 注意事項(2021/12/19追記)
- はじめに
- 主に使用したソフトのバージョンとか
- 仮想化ソフトのインストール
- CentOSのインストール
- インストール後の初期設定
- ハードディスク2のマウント
- Time Machine用ディレクトリの作成
- Sambaインストール
- Sambaの設定
- 接続する
- 参考URL(順不同)
- 速度
- さいごに(ファイルサーバを立てるに至った本当の経緯など)
- 蛇足的あとがき(近況報告的な)
- 脚注
主に使用したソフトのバージョンとか
ソフト/OS | バージョン |
---|---|
CentOS | 8.1.1911 |
macOS | Catalina 10.15.4 |
Samba | 4.10.4 |
VMware Workstation Player | 12.5.9 |
仮想化ソフトのインストール
WindowsなどでCentOSを仮想OSとして立ち上げるのに使います。
クリーンインストールしたり、デュアルブートさせたりするなら要りませんが、今回は仮想OSとして立ち上げたCentOSを扱います。
VirtualBoxやVMwareなどがありますが、今回は昔に導入していたVMwareを使っています。(古いバージョンですみません……)
VMware Workstation Player のダウンロード | VMware | JP
VMware Workstation Playerは非営利目的の場合、無償で使えます。
VirtualBoxはオープンソース*1な上、macOSでも動かせるのでVirtualBoxのが良いかもしれないです。
まあ多分どっちでもできると思います。
CentOSのインストール
ここではサーバー用のOSとして、CentOS 8を使います。
CentOSは公式サイトからisoをもらってきます。
isoはStreamとLinuxがありますが、Linuxの方が安定版のようなのでLinuxを選択しました。
簡易インストールは使用せずにCDドライブとしてisoを指定してインストールします。
デバイス | 概要 |
---|---|
メモリ | 8GB |
プロセッサ | 4 |
ハードディスク | 20GB |
ハードディスク2 | 1024GB |
CD/DVD | CentOS-8.1.1911-x86_64-dvd1.iso |
ネットワーク アダプタ | ブリッジ(自動) |
ハードディスクはSSD上に、ハードディスク2の.vmdkはHDD上に置いてあります。
ソフトウェアの選択ではベース環境に「サーバー」を選択、選択した環境のアドオンでは「開発ツール」のみを選択しました。
インストール先は20GBの方のハードディスクで、パーティションは自動構成。
ネットワークは自動でつながったので自動のままにしました*3。
ホスト名は適当に決めます。*4
インストール中にrootのパスワードを設定します。*5
インストール後の初期設定
前提として、基本的にどのコマンドもroot権限で行います。
一般ユーザでログインしている場合は、
sudo su -
でrootになっておきます。
SELinuxの無効化
SELinuxというセキュリティ関係の機能があるんですが、有効にしてると面倒そうだったのでとりあえず最初に無効にしました。*6
vi /etc/selinux/config
で設定ファイルを開いて、*7
SELINUX=enforcing
の行を
SELINUX=disabled
に変更
getenforce
でDisabled
と表示されることを確認します。
一般ユーザの作成
普段はSSHでrootに直接ログインすることはせず、直接コンソールで作業するか一般ユーザでSSH接続して作業します。(SSHはサーバー等を安全に遠隔操作するための手段です。)
というわけで一般ユーザを作ります。(インストール時にユーザを作成してるなら必要ないと思います。)
useradd username passwd username
username
のところは好きな名前にしてください。
passwd username
を入力すると設定したいパスワードを要求されるので、要求通りに2回打ち込めばユーザの作成は完了です。
sudoできるユーザの追加
初期状態ではsudo出来ないので、とりあえず管理用のユーザがsudo
できるようにしておきます。
インストール時にユーザを作成してるならこの作業は必要ないかもしれません。
とりあえずwheelグループにユーザーを追加します。
wheelグループは管理者権限を持ってるユーザのグループみたいな感じのやつです。*8
usermod -aG wheel username
でユーザ「username」をwheelグループに追加します。*9
id username
で所属グループを確認できます。
ちなみに、wheelグループを使わなくてもvisudo
でusername ALL=(ALL) ALL
を追記するという方法もあります。
SSHでのrootログインを禁止
今回の用途だとやらなくても良い(?)と思うんですが、やっとく方が良いのでやっておきます。 *10
vi /etc/ssh/sshd_config
でSSHの設定ファイルを開きます。
PermitRootLogin yes
をPermitRootLogin no
に変更
systemctl restart sshd
でSSHを再起動します。
ハードディスク2のマウント
一つのディスクだけならこの作業は必要ないです。
今回はフォーマットされていないまっさらなディスクをマウントして使えるようにします。
ざっくりした順序
- マウントしたいディスクのデバイス名を確認
- cgdiskでパーティション作成(GPTパーティションを作りたかったので)
- mkfsでファイルシステムを作成(今回はxfsを選択)
- /mnt/以下にディレクトリを作ってそこにマウント
Linuxのファイル構造
WindowsならCドライブとかDドライブとかのドライブレターがあるじゃないですか。
Linuxではこれが無いので/
以下の任意のディレクトリにマウントされます。*11
Windowsに慣れてると違和感がすごくて戸惑いました……。
マウントしたいディスクのデバイス名を確認
fdisk -l
とかlsblk
とかdmesg
とかを使ってデバイス名を確認します。
基本的にHDDとかの類は/dev/
以下にsda
とかsdb
とかのsdなんちゃらって感じの名前で認識されるようです。
なお現在使用しているドライブのデバイス名はdf
で分かります。
dmesg
を使う際はdmesg | grep sd
等で出力を絞り込んでやると見やすいと思います。
今回マウントしたいドライブのデバイス名は/dev/sdb
だとわかりました。
cgdiskでパーティションの作成
fdisk
とかcfdisk
とかgdisk
とか似たようなコマンドがいろいろありますが、今回は一番簡単にGPTでパーティションが作れそうだと思ったのでcgdisk
を使いました。
cgdisk /dev/sdb
(/dev/sdbは先ほど調べたデバイス名を入力します) でcgdiskを起動します。
すると「このディスクはGPTじゃないよ!」っていう警告が出ますが、まっさらなので当たり前です。
そのままエンターで続行します。
そうしたらcgdiskのメインメニューが現れます。
デバイス名やサイズなどがあってることを確認したら、カーソルキーで[ New ]を選びます。
First sectorとかSize in sectorsとか色々要求されますが、とりあえず一つのパーティションで良い場合は、何も入力せずにエンターを押してるだけで大丈夫のようです。たぶん。
最後にpartition nameを訊かれるのでTimeMachine
と入力しておきました。(これは入力しなくても良いはず)
正しく設定出来たら上の画像のような感じになってると思うので、[ Write ]を選択して完了します。
間違えた場合は[ Quit ]を選択すると無かったことに出来ます。*12
ファイルシステムを作成
CentOSでよく使われるファイルシステムはext4
かXFS
らしいです。
今回は、ちょっと調べてパフォーマンスが良さそうだったXFS
を採用しました。
mkfs.xfs /dev/sdb1
デバイス名の末尾に1を付け足したのがパーティション名になるみたいなので、ここではそれを指定します。
ext4を使いたい場合はmkfs.ext4
みたいな感じでxfsのところを変えて下さい。
マウントする
まずマウントするためのディレクトリを作ります。((ここでは、マウントする仮想ディスクが置いてあるのがSeagateの2TBHDDなので、ディレクトリ名を"sea2t"としました。)
cd /mnt mkdir sea2t
マウントする前に、分かりやすいラベル(今回は”TimeMachine”)を付けておきます。
xfs_admin -L "TimeMachine" /dev/sdb1
でさっき作ったパーティションにラベルを付けます。(ext4の場合はe2label /dev/sdb1 TimeMachine
)
再起動時に自動的にマウントさせるために、/etc/fstab
の最後の行に
LABEL=TimeMachine /mnt/sea2t xfs defaults 0 0
を追記します。
mount /dev/sdb1 /mnt/sea2t/
でマウントして完了です。
Time Machine用ディレクトリの作成
以下のコマンドを1行ずつ入力します。
cd /mnt/sea2t/ mkdir timemachine chmod -R 0777 timemachine chown -R nobody:nobody timemachine
ディレクトリを作った後、パーミッションと所有者も変更しているけど、これは必要なかったかもしれない……。
Sambaインストール
ようやくメインのSambaをインストールします。
と言っても簡単です。
dnf -y install samba systemctl start smb nmb systemctl enable smb nmb
これでSambaを起動(start)した上、自動で起動されるように設定(enable)できます。*13
自動起動が有効になっているかはsystemctl is-enabled smb nmb
で確認できます。
Sambaの設定
設定の概要
Sambaにアクセスするためのユーザを設定
Sambaにアクセスしたい人の分だけuseradd
とpasswd
でLinuxユーザを追加します。
pdbedit -a -u username
でSambaにアクセスする用のユーザーを設定できます。(ここで設定したユーザ名とパスワードをアクセス時に使用します。)
/etc/samba/smb.conf の編集
まず、バックアップを取っておきます。
cd /etc/samba cp -p smb.conf smb.conf.org
その後、vi smb.conf
で編集します。
とりあえず今のところこんな感じに設定しています。
[global] workgroup = WORKGROUP server string = SAMBA SERVER Version %v netbios name = sagittarius security = user passdb backend = tdbsam vfs objects = catia fruit streams_xattr fruit:metadata = netatalk fruit:encoding = native dos charset = CP932 wins support = yes # printing = cups # printcap name = cups load printers = no disable spoolss = yes # cups options = raw [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [TimeMachine] comment = Backup for Mac Computers path = /mnt/sea2t/timemachine writable = Yes browsable = Yes guest ok = Yes fruit:time machine = yes fruit:time machine max size = 1T
[global]のnetbios name
や[TimeMachine]のpath
、fruit:time machine max size
とかは環境に合わせて設定してください。
netbios name
にはサーバーのホスト名を、path
には先ほど作ったTime Machine用のディレクトリのパスを設定します。
fruit:time machine max size
ではTime Machineで使う最大容量を指定します。500GBなら500G
という感じです。
TimeMachine以外に複数のユーザーで共有できるディレクトリを作って追加すると便利かもしれないのでそのうちやります。*14
とりあえず設定が終わればtestparm
コマンドで確認します。
正常なら
systemctl restart smb nmb
でSambaを再起動します。
ファイアウォールの設定
たぶんこのままだと、接続しようとしてもファイアウォールに弾かれるのでSambaへのアクセスを通すよう設定します。
firewall-cmd --add-service=samba --permanent
これでファイアウォールの接続許可サービスにSambaを追加します。
success
と表示されたらOK。
firewall-cmd --reload
でファイアウォールをリロードします。
これも完了するとsuccess
と表示されます。
接続する
ここまで来たらおそらく接続できる状態になってると思います。
MacならFinderのサーバーへ接続で、
smb://hostname
と入力すると接続できるはずです。
接続した状態ならTime Machineの環境設定の利用可能なディスクにSambaのディスクが表示されます。
暗号化も選択できます。
Windowsでは、「Win + R」のファイル名を指定して実行で
\\hostname
と入力すると接続できます。
参考URL(順不同)
- https://www.rem-system.com/centos-linux8-install/
- https://www.rem-system.com/centos8-first-settings/
- https://www.rem-system.com/centos8-samba-install/
- https://server.etutsplus.com/ubuntu-create-partition-and-filesystem/
- https://kazmax.zpp.jp/linux_beginner/
- https://ideal-reality.com/computer/server/time-machine-samba/
- http://www.samba.gr.jp/project/translation/current/htmldocs/manpages/vfs_fruit.8.html
速度
Wi-Fi接続のMacBook Pro (2018)からスピードテストを行ったところこんな感じでした。
メインPCのWindows(有線接続)からアクセスするとこんな感じ。
……おそい、遅すぎる……。 これはサーバーを有線接続してないのがボトルネックになってる感じなんですかね……スイッチングハブ(有線LANを分岐するやつ)買おうかな……。
ルーターから遠い部屋で、何本もケーブルを引いてくるわけにもいかないのでこういうのが一つ欲しい……。
(追記)
iperf3
を使ってルータに直接有線接続しているメインPCから速度テストしてみたところ、約60~70Mbps(≒8MB/s)くらいでした。
まあ普通にネット接続するだけなら十分な速さではあると思います。(ファイルサーバーにするには遅いかな……)
問題のMacBook Proからiperf3
してみたところ、20Mbps(≒2.5MB/s)くらいしか出ませんでした……。
なんでや……同時に5GHz帯のWi-Fi使ってるせいかも……。*15
その後、調べてみるとバッファローのスイッチングハブがコスパ良さそうだったので注文しました……。↓
https://www.amazon.co.jp/dp/B00I5871DI
新しいモデルが出て安くなってるみたいですが、8ポートの電源内蔵金属筐体で2,480円(2020年5月25日時点)ってなかなかお得なのでは……?
新型はこっち。前面のライトが少なくなった以外の違いってあるんでしょうか……?
ついでにcat6Aのケーブルも2本ほど買ったので届くのが楽しみです……。
(追記終わり)
とりあえず「Time Machineのバックアップを無線で取る」という目的は一応達成されたので速度とかはまた今度考えます。
これが出るまで長い時間かかりますがサーバーを落とさず、MacBookも電源につないだまま待ちましょう……。
あれ、これ外付けHDDの方が速くて安定してて良いのでは……?
さいごに(ファイルサーバを立てるに至った本当の経緯など)
ここまで読んでいただきありがとうございます。
最初はWindowsの共有フォルダに無理やり.spacebundle*16を置く方法でやろうとしてたんですが、これは対応してないのを無理やり動かしてるせいか認識されないことがあったり、macOSのバージョンアップとかで動かなくなったりして、不安定な感じでした。
仕方がないので外付けHDDにバックアップを取ろうかと思いましたが空いてる外付けHDDなんてありません。
かといって内臓HDDを増設できる環境で、割高な外付けHDDを買うのはあまり気が向きません。(しかしノートPCのバックアップなら、おそらく2TBか4TBあたりの外付けHDDを買うのが一番楽で安定した選択でしょう……)
いや、メインPCのバックアップ用のHDDをメインPCに増設して、ノートパソコンバックアップ用の外付けHDDを一つ空けるのが一番良い選択なのでは……!?
などと思いましたが、HDDを買うオカネもありませぬ。
というわけで、少し容量が余り気味のサブPCにバックアップ用のファイルサーバーを立てることを思いついた次第でございます。はい。*17
Windowsの共有フォルダにイメージバックアップできるいい感じのmacOS用無料ソフトがあれば良いんですけどTime Machineが強すぎて見つからないんですよね……。
あ、Windows用のバックアップソフトについても最近めっちゃ調べたのでまた記事にしたいと思います。
そのうちゲーム開発用のGitサーバーも立てたい……今はGitHubにGit LFS使ってプライベートリポジトリを置いてるんですが画像や音声で容量がかさんでやばいんですよね……。*18
蛇足的あとがき(近況報告的な)
どうもスカイジです。イキテマス。
最近はプリコネとかシャニマスとか始めてしまってやばいです。やばい。
大学のオンライン授業も始まったし、挙句の果てにEpicがCiv6とかいうえげつないゲームを無料配布してるじゃないですか……。手を出すと絶対やばいですよこれは。
シドマイヤーズ シヴィライゼーション® VI | いますぐダウンロードして購入 - Epic Games Store
とりあえず貰ってはおきましたがインストールしてないのでセーフですセーフ(?)
学校がしばらくなくて完全に堕落しきった4月を送っていましたが、そろそろ動画も作りたくて仕方がなくなってきた今日この頃です。でもどうやって動画作ってたんだっけ(
動画とかゲームとか作ってないと心身共に悪循環に陥ってダメですね。完全に何か作ってないとダメな体になってしまった。
きりたんとか弓鶴くんとかも使ってやりたいし……。
そういえば新しいボイロ発表されましたね……小春六花さん……やばいですよこれ……金欠なのに絶対買ってしまう……ヤバイ……。
そんな感じです。
脚注
*1:オープンソースでないExtensionPackなどもあるらしいけど本体はGPLv2のオープンソース
*2:適当に設定したけど多分メモリ8GBはちょっと過剰
*3:が、ここでIPアドレスとかを設定しておいても良かったかもしれない
*4:僕は今回「sagittarius」にしました。ホスト名についてちょっと調べてみたら、サーバーに担わせる機能でつける場合もあったり、神や天使の名前だったり、数学者の名前だったり、いろいろな付け方があって面白かったです。今度付ける機会があったら「kotonoha」とかボイロの名前を付けたいな……。
*5:なおここで一般ユーザも作るつもりだったがrootを作ってる間にインストールが完了してしまったので作れなかった模様
*6:もちろんセキュリティ的には無効化するのは望ましくないと思いますが、公開サーバーでもないので多分問題にはならないと思います。たぶん。そのうち勉強して使ってみたいと思いますが今回はとりあえず無効ということで。
*7:viはLinuxに付属するテキストエディタです。 (Windowsで言うとこのメモ帳みたいな感じ?)
viの使い方について、最低限のところだけ書いておきます。
起動直後は文字が打ち込めないノーマルモードになってるので、「i」キーで挿入モードにします。
挿入モードなら普通に文字の挿入や削除ができるので、そのまま編集します。
編集し終わったらエスケープキーでノーマルモードに戻ります。
ノーマルモードで「:w」を打ち込んでからエンターを押すと保存できます。
同じように「:q」でファイルを閉じます。(「:wq」で保存してから終了が同時に出来ます。)
ここまでできたら大体何とかなりますが、いろいろと便利なコマンドもあるので詳しい使い方についてはググってください。
*8:ネットで調べると/etc/sudoersを編集しないといけないみたいな情報が散見されますが、CentOS 8では/etc/sudoersの%wheel ALL=(ALL) ALLの行が初めから有効になってるみたいなので、wheelにユーザを追加するだけでsudoできるようになります。たぶん。
でもその下にある%wheel ALL=(ALL) NOPASSWD: ALLの行のコメントアウトを外せば一々パスワードを入れなくて良くなるので便利かもしれません。
まあ一度sudo suしたらrootになれるので、そんなに手間は変わらないかもしれませんが。
*9:-aGオプションは副グループを追加するもので、主グループをwheelに変更したい場合はオプションに-aGではなく-gを指定します。
*10:出来ればパスワードログインも禁止したいところですが、公開鍵認証をここで説明するのはちょっと大げさ(本音を言えば面倒)だしハマりかねないので、パスワードログインはとりあえず有効にしておきます。
*11:今回はとりあえず/mnt/sea2tというディレクトリを作ってそこにマウントします。
*12:Writeを選択するまでは何も書き込まないので
*13:smbがSambaのメインのサービスで、nmbが名前解決のためのサービスらしい。試しにnmbを起動しなかったらホスト名ではアクセスできなかった。
*14:まあ自宅でそんなの構築しても、家族同士でファイルを共有するくらいにしか使わないんですけどね……それだって普通のクラウドストレージで十分だし……
*15:あとスピードテストしてるときにCentOSでdstatを見てるとCPUのアイドルが10%台になることがあるのですが、これはCPU性能が足りてない可能性があるということなんですかね……。
一応i7-6700の4スレッドを与えてるはずなんですが……。(今となってはi3に負けかねないi7ですが)
*16:今は.backupbundleになってるみたいですね
*17:サブPCを売れば少しばかりのお金になるのでは……?
*18:無料では1GBしか使えないのでUnityのデータを置いておくのは厳しい