samba windows ファイルサーバー構築

なにはともあれ
$ sudo apt-get install samba
VPNからつなぐので、hosts allow = で VPNサーバーのIPと、自分あたりを明示しといたらあとは、ココ のまま だけど、Share フォルダー側からのバックアップ、右クリック⇒プロパティ⇒以前のバージョンを使うための snapshot というリンクもつくる(Shadow copyの記述は、ココなどを参考。 それから
$ sudo mkdir /var/share
$ sudo chmod 777 /var/share
$ sudo mkdir /var/snapshot
$ sudo chmod 777 /var/snapshot
設定ファイルの設定
$ sudo cp -a /etc/samba/smb.conf /etc/samba/smb.conf.org
$ sudo vi /etc/samba/smb.conf
# 25行目あたり追記
  unix charset = UTF-8
  dos charset = CP932

# 51行目あたり 
 ;interfaces = 127.0.0.0/8 10.0.0.0/24   #これはコメント化して
 hosts allow = 127.0.0.1 localhost     #その他VPNパブリックIPとか

# 58行目あたり コメント解除
 bind interfaces only = yes

#末尾に追加
[share]
  comment = Data Directories
  path = /var/share
  writable = yes
  guest ok = yes
  guest only = yes
  create mode = 0777
  directory mode = 0777
  share modes = yes
  browseable = yes
  vfs objects = shadow_copy2
  shadow:snapdir = /var/snapshot
  shadow:basedir = /var/share
  shadow:sort = desc

[snapshot]

  comment = Snapshot Directories
  browseable= yes
  writable = no
  path = /var/snapshot

これで samba再起動

$ sudo /etc/init.d/smbd restart

ちゃんと穴があいているか確認

$ nmap localhost

どれどれ

PORT      STATE    SERVICE
139/tcp   open     netbios-ssn
445/tcp   open     microsoft-ds

こうなっていればよいかなとりあえず。。。 139、445は、AWSのセキュリティ側の穴もあけて

Windowsからは、

PC>>ネットワークドライブの割り当て>>X: \localhost\share などとすればOK。

バージョン保存

Croneくんにさせるが・・・ まずは、初期ファイルをUpdateする
$ DIR=$(TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S)
$ rsync -av  /path/to/data/ /path/to/snapshot/$DIR/
Dailyで実行させる Shellスクリプトを記述 ココを参照して記述しました。
sudo vi /etc/cron.daily/snapshotshell
新しいファイルができるので
#!/bin/sh
DIR=$(TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S)
previous=$(ls -1t /var/snapshot/ | head -1)
if [ -z "${previous}" ]; then
        rsync -a /var/share/ /var/snapshot/$DIR/
else
        rsync -av --delete --link-dest=/var/snapshot/$previous/ /var/share/ /var/snapshot/$DIR
fi
意味合いとしては、最新のファイルがあれば、差分コピーするというものです。
Dailyのいつ処理をするのか? というところは、/etc/crontab に記述されている。cron.dailyを実行している行の冒頭が 標準時間で 分・時・日 の記述(*はワイルドカード)なので、そこをイジイジして実行するかしばし待つ。(以下の例は、ログ掃出しも記述の例)
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/zsh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
15 11   * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) >> /var/log/cron.daily.log
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
こんな感じにでてくるねー
img-2.PNG