netbsd 6.1.3とsamba 3.6
会社にて、WinXP(それもHome)を共有サーバーにしてたけど、同時接続が5ユーザーの制限から、接続できない時が発生するようになったのでsambaに乗り換え。
パッケージはソースをコンパイルするのはめんどいので、コンパイル済みパッケージをインストールします。
samba、vim、rsyncをpkg_addでインストールします。関連パッケージも同時にインストールされ、以下のようになります。
> pkg_info
vim-share-7.4.052 Data files for the vim editor (vi clone)
vim-7.4.052 Vim editor (vi clone) without GUI
perl-5.18.1nb3 Practical Extraction and Report Language
tdb-1.2.12 Small database system which uses files to store data
popt-1.16nb1 Command line option parsing library
readline-6.2 GNU library that can recall and edit previous input
samba-3.6.23 SMB/CIFS protocol server suite
rsync-3.1.0 Network file distribution/synchronisation utility
/usr/pkg/share/examples/rc.d/に、smbd, nmbd, winbindd, sambaがあるので/etc/rc.d/へコピーします。
> cd /usr/pkg/share/examples/rc.d
> cp nmbd samba smbd winbindd /etc/rc.d
/etc/rc.confに以下の行を追加します。
samba=YES
smbd=YES
nmbd=YES
winbindd=YES
etcファイルのリンクを作成します。
ln -s /usr/pkg/etc/samba /etc
/etc/samba/smb.confを編集します。
共有はゲストも更新可能な(ユーザー管理しない)簡単な共有とし、シャドウ・コピーを使えるようにします。
設定後、共有がうまく動かない場合には、log levelを3などに設定し、ログ(log.smbd)を見るのが解決の近道です。標準ではlog level は 0 (zero)です。
[global]
dos charset = CP932
server string = Samba %v
interfaces = 192.168.0.0/16
map to guest = Bad User
log level = 1
max protocol = SMB2
unix extensions = No
idmap config * : range =
idmap config * : backend = tdb
hosts allow = 192.168.0.0/16, 127.0.0.0/8
wide links = Yes
[SHR]
comment = SHR共有
path = /var/samba/shares/shr
read only = No
guest ok = Yes
hosts deny = all
vfs objects = shadow_copy2
shadow:sort = desc
shadow:snapdir = /var/samba/snapshot/shr
shadow:basedir = /var/samba/shares/shr
共有フォルダのshrは、ゲストが読み書きできるように、chmod go+w で誰でも書き込みできるようにしておく必要があります。
> mkdir /var/samba/shares/shr
> chmod go+w /var/samba/shares/shr
最後にsamba(smbd, nmbd, winbindd)を起動させ、Windowsから共有フォルダが見れればOKです。(smbd, nmbd, winbinddすべて動作させたほうがトラブルないです)
/etc/rc.d/samba start
また、swatを使うと状況が分かりやすいのでswatを使えるようにします。
/etc/inetd.confに以下の行を追加し inetdを再起動させ、http::/192.168.xxx.xxx:901 をブラウザで開いてswatが見れればOKです。
swat stream tcp nowait.400 root /usr/pkg/sbin/swat swat
swatを開くと、こんな感じですね。
シャドウ・コピーを作るシェルスクリプトです。設定する箇所は、共有フォルダのsrc_dir、シャドウ・コピー先のdest_dir、シャドウ・コピーの最大履歴数のhist_maxです。
cronで定期的に動かしてください。
#!/bin/sh
src_dir="/var/samba/shares/"
dest_dir="/var/samba/snapshot/"
hist_max=13
snap_dir=$(TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S)
for sub_dir in `ls -F $src_dir | grep /`; do
if [ `ls -1 $src_dir$sub_dir | wc -l` -eq 0 ]; then
continue
fi
if [ ! -d $dest_dir$sub_dir ]; then
mkdir $dest_dir$sub_dir
fi
if ! ls -dt $dest_dir$sub_dir@GMT* > /dev/null 2>&1 ; then
rsync -a $src_dir$sub_dir $dest_dir$sub_dir$snap_dir
continue
fi
last_snap=`ls -dr $dest_dir$sub_dir@GMT* | head -1`
rsync -a --delete --link-dest=$last_snap $src_dir$sub_dir $dest_dir$sub_dir$snap_dir
i=0
for snap_hist in `ls -dr $dest_dir$sub_dir@GMT*`; do
i=`expr $i + 1`
if [ $i -gt $hist_max ]; then
rm -R $snap_hist
fi
done
done
最後に
sambaに乗り換え後、今までのWinXPと比べて明らかに速いです。