- OS X に、 NFS や samba をマウントする方法。
- コマンドライン手動
automount
- それらを、
rsync
でバックアップする方法。
後者に関しては、NFS が効くんなら( = *nux 系 OS なら)普通に rsync over ssh
で良いんじゃね? と言うことで、ここでは、 Windows を samba でマウントしたものを想定して。
登場するディレクトリについて
IP | 対象パス | machine | OS | 役割 |
---|---|---|---|---|
192.168.XX.XX | C:\Users\bunzaemon\for_smb | A | windows 7 | samba サーバ |
192.168.YY.YY | /Users/bunzaemon/for_nfs | B | OS X 10.10 | NFS サーバ |
192.168.ZZ.ZZ | /Users/bunzaemon/smb | C | OS X 10.10 | samba マウントポイント |
192.168.ZZ.ZZ | /Users/bunzaemon/nfs | C | OS X 10.10 | NFS マウントポイント |
全て
- ユーザー名: bunzaemon
- パスワード: passwd
マウンポイント以下にマウントする名前は、サーバ側のディレクトリ名(for_smb or for_nfs)
NFS/samba マウント
サーバ側での初期設定
samba マウントの場合
A
で。
普通に対象ディレクトリ for_smb を右クリックして、「特定のユーザー」を対象に共有フォルダを作成。
NFS マウントの場合
B
で。
/etc/exports
で公開するディレクトリを設定。
% cat /etc/exports
/Users/bunzaemon/for_nfs -mapall=bunzaemon 192.168.ZZ.ZZ
% sudo nfsd update
- アクセスは、ユーザー bunzaemon からのもの(-mapall=)
-
192.168.ZZ.ZZ
からのアクセスのみ受ける -
nfsd
のupdate
しないといけない。
クライアント側での用意
以下、 C
にて。
% cd /Users/bunzaemon
% mkdir -p nfs/for_nfs smb/for_smb
- 手動でのマウントでは、ディレクトリを作ってやる必要有り。
手動でのマウント、アンマウント
samba マウント
% mount -t smbfs //bunzaemon:passwd@192.168.XX.XX/for_smb /Users/bunzaemon/smb/for_smb
Note: You should always use the system mount command and never call mount_smbfs directly.
[引用元] man 8 mount_smb
だそうだ。
NFS マウント
% mount 192.168.YY.YY:/Users/bunzaemon/for_nfs /Users/bunzaemon/nfs/for_nfs
アンマウント
% umount /Users/bunzaemon/smb/for_smb
% cd /Users/bunzaemon
% rm -rf smb
NFS も同様
自動マウント
autofs
を利用。
編集するファイルは四つ
NFS/samba 共通が二つに、NFS/samba それぞれ一つずつ
- auto_master
- autofs.conf
- auto_nfs
- auto_smb
以上のファイルの編集が終了したら、
% automount -vc
して反映させるか、再起動する。
上記コマンドで、実行後直ぐに反映されるかと思ったら、多少のタイムラグがありそうなので、対象のディレクトリなどを、早急に弄る事はしない。
auto_master
NFS/samba 共通
/etc/auto_master
の最後に、以下を追加
/Users/Shared/smb auto_smb
/Users/Shared/nfs auto_nfs
左がマウントポイントで、右がマップ名
autofs.conf
AUTOMOUNT_TIMEOUT=0
にして自動アンマウントさせない様にする1。
余談だが、
AUTOMOUNTD_MNTOPTS=nosuid,nodev
って書かれているので、auto_smb
にも auto_master
にも、 nosuid
を充てる必要がない(?) @OSX 10.10。
auto_nfs
nfs の設定が書かれるマップファイル。
for_nfs -fstype=nfs,noresvport nfs://192.168.YY.YY:/Users/bunzaemon/for_nfs
auto_smb
smb の設定が書かれるマップファイル。
for_smb -fstype=smbfs,soft ://bunzaemo:passwd@192.168.XX.XX/for_smb
rsync
Windows のバックアップを取りたくて。
マウントした samba ディレクトリを、 Time Machine してくれたら良いのだけれど、そうは行かないので、 rsync で当該ディレクトリを一旦他のディレクトリにバックアップして、それを Time Machine で保存してく2。
同一マシン内で完結するので、rsync
をデーモンモードで動かすまでもない。
もちろん、 C
のマシンにて。
% pwd
/Library/LaunchDaemons/
% cat com.bunzaemon.rsync.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.bunzaemon.rsync</string>
<key>UserName</key>
<string>bunzaemon</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/rsync</string>
<string>-av</string>
<string>--delete</string>
<string>/Users/bunzaemon/smb/for_smb/</string>
<string>/Users/bunzaemon/bak/for_smb/</string>
</array>
<key>StandardOutPath</key>
<string>/tmp/com.bunzaemon.rsync.stdout.log</string>
<key>StandardErrorPath</key>
<string>/tmp/com.bunzaemon.rsync.stderr.log</string>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
普通に root で実行するとマウントしなおした場合に root 権限でマウントしてしまう。
それを回避するには、色々手はあるが、 rsync
の設定云々で、対応するのも面倒なので、 man 5 launchd.plist
の UserName
を利用して、ユーザーでジョブを実行させる。
% sudo chmod 600 !$
com.bunzaemon.rsync.plist
% sudo chown root !$
% sudo launchctl load com.bunzaemon.rsync.plist
最初の一回目に、コピー元とコピー先を間違えると痛い目に合う。