vfs_shadow_copy2 — Windows クライアントにスナップショットをシャドウコピーとして見せる
vfs objects = shadow_copy2
この VFS モジュールは samba(7) システムの一部である。
vfs_shadow_copy2 VFS モジュールは
	Microsoft のシャドウコピーサービスと似た機能を提供する。
	適切に設定されると、このモジュールにより Microsoft
	シャドウコピークライアントから Samba の共有上にある "シャドウコピー"
	をファイルシステムのスナップショット経由で参照できるようになる。
	
これは、(オリジナルの shadow_copy(8) モジュールと比較して) 以下の機能を追加している、シャドウコピーの第 2 版となるモジュールである:
ファイルシステムが他の場所でスナップショットを格納する場合、スナップショットへの シンボリックリンクがある、共有のルートディレクトリに対して事前設定する必要は ない。その代わり、ファイルシステムのスナップショットを探すように、 自在にモジュールを設定出来る。これは数千個の共有があったり [homes] を使ったりする場合にとても重要なことである。
スナップショットディレクトリは、ある特定位置だけはなく、 ディレクトリツリー中のあらゆる場所置くことが出来る。このモードは、 たとえば GPFS の独立ファイルセットのような、任意のサブツリーでスナップショットを 取ることができるファイルシステムのサポートに有用である。
スナップショット名の目立たせ方: スナップショットは str[fp]time 変換結果と互換のある任意の形式で名前を付けることができる。
タイムスタンプは UTC の代わりにローカル時間で表現できる。
ファイルの inode 番号は、必要に応じて、オリジナルとは異なるように 変更できる。これは Windows GUI の 'リストア' ボタンが、GPFS のように、 スナップショットファイルとオリジナルに対して同じデバイスと inode 番号を返すファイルシステムを使っているときに共有違反がないように 動作するようにする。
シャドウコピーの結果は、既定値ではクライアントに送られる前に整列 される。これはディレクトリをアルファベット順に読めないファイルシステム にとって便利である(通常の unix)。もしもファイルシステムが ディレクトリ表示時を整列するのであれば、ここでの整列順は、設定可能で 停止もできる。
このモジュールはスタック可能である。
vfs_shadow_copy2 は、ファイルシステムが
	スナップショットを実装していることを前提にしている。
	一般的なファイルシステムの多くが標準でこれをサポートしている。
	
vfs_shadow_copy2 が認識できるように、
	ファイルシステムのスナップショットが特定の名称のディレクトリ配下で有効になっている
	必要がある。スナップショットディレクトリは通常共有のルートディレクトリ
	直下にあるサブディレクトリであるが、以下で詳細が説明されている、
	パラメーターで設定される、他のモードもある。
特定の時点でのスナップショットはスナップショットディレクトリの
	サブディレクトリ中にあることが期待されていて、それは、スナップショット
	取得時間を表現する書式になっている。
	shadow:format オプションによって変更できるその書式は、
	@GMT-YYYY.MM.DD-hh.mm.ss であり、それぞれ
	
YYYYは 4 桁の年
MMは 2 桁の月
DDは 2 桁の日
hhは 2 桁の時
mm>は 2 桁の分
ss>は 2 桁の秒
で指定する。
vfs_shadow_copy2のスナップショットの名前形式は、
	以下の date(1) コマンドで生成できる:
	
TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S
このパラメーターを使うと、共有パスを含む、ファイルシステムのマウント ポイントを指定できる。通常このマウントポイントは自動的に検出される。 しかし、特にテストのような、ある種の場面においては、 このように指定できることが好都合である。
例: shadow:mountpoint = /path/to/filesystem
既定値: shadow:mountpoint = 未定義
共有のスナップショットを保持しているファイルシステムの、
		ディレクトリへのパス。絶対パスが指定された場合、それはその通り
		に使われる。相対パスが指定された場合、ファイルシステムにおける
		共有のルートのマウントポイントからの相対となる
		(shadow:mountpointを参照)。
		
		shadow:snapdirseverywhere は、このパラメーター
		に依存し、相対パスが必要であることに注意。絶対パスで設定すると、
		shadow:snapdirseverywhere は無効となる。
		
		shadow:crossmountpoints オプションも、
		相対 snapdir を必要とすることに注意。絶対パスで設定すると、
		shadow:crossmountpoints は無効となる。
		
例: shadow:snapdir = /some/absolute/path
既定値: shadow:snapdir = .snapshots
basedir オプションは共有のマウントポイントと、ファイルシステムの 共有のルートとの間で、ファイルシステムのスナップショットが取られる 所からの相対で、ディレクトリを指定できるようにする。
たとえば、もしも
		basedir = mountpoint/rel_basedir
		
		share_root = basedir/rel_share_root
		
		snapshot_path = mountpoint/snapdir
	        
		または snapdir が絶対パスの場合
		snapshot_path = snapdir
		
		TIMEにおけるスナップショット
		file = mountpoint/rel_basedir/rel_share_root/rel_file
		は
		snapshot_path/FS_GMT_TOKEN(TIME)/rel_share_root/rel_file
		に置かれる。このとき、FS_GMT_TOKEN(TIME) は、ファイルシステムが要求する
		書式に沿った、TIMO のタイムスタンプである
		(shadow:formatコマンドを参照)。
	        
basedir の既定値は共有ルートのファイルシステムにおけるマウントポイント
		である(shadow:mountpointを参照)。
		
		shadow:snapdirseverywhere と
		shadow:crossmountpoints オプションは、
		shadow:basedir と非互換であり、
		basedir の設定を無効にすることに注意。
		
		このパラメーターを使うと、スナップショットのルートディレクトリ
		からの相対で、スナップショット中における共有のルートディレクトリ
		のパスを指定出来る。これは、shadow:basedir
		の代替方法であり、より多くの制御が出来る。
		
		たとえば、もしも各スナップショット中で、共有中のファイルが
		path/to/share/ というパスを持つ場合、
		shadow:snapsharepath は、
		path/to/share に設定できる。
		
このパラメーターを使うと、スナップショットがオリジナルの ファイルシステムのイメージかその一部かを意味しなくなる。 たとえば、あるシステムが、共有中に含まれるファイルのみの バックアップを実行し、論理構造でバックアップ ファイルを公開できるようになる。
share1/
share2/
.../
		shadow:snapdirseverywhere と
		shadow:basedir オプションは、
		shadow:snapsharepath と、
		shadow:snapsharepath を無効にする
		設定とは非互換であることに注意。
		
例: shadow:snapsharepath = path/to/share
既定値: shadow:snapsharepath = 未定義
既定値では、このモジュールはクライアントにデータを送信する前に、 シャドウコピーデータをアルファベット順に整列する。このパラメーターを 使う事で、整列の順番を指定できる。設定可能な値は desc(既定値で 降順)とasc(昇順)である。ファイルシステムがディレクトリをアルファベット順 に整列する場合、このパラメーターに、その他の値を指定することで、 このモジュールの整列動作を止めることができる。
例: shadow:sort = asc
例: shadow:sort = none
既定値: shadow:sort = desc
これは補助的なパラメーターで、スナップショットの名前を UTC/GMT か、ローカル時間にするかを指示する。これが無効な場合、UTC/GMT が使われる。
shadow:localtime = no
これは補助的なパラメーターで、ファイルシステム中での、 スナップショットの名前を決めるための、書式を指定する。 書式は str[fp]time によって認識される変換形式と互換がなければならない。 既定値は、"@GMT-%Y.%m.%d-%H.%M.%S" である。
既定値: shadow:format = "@GMT-%Y.%m.%d-%H.%M.%S"
このパラメーターは、書式文字列中での時間が、 符号なしの long integer (%lu) ではなく、 strptime() が認識できる時間とする場合に使用する。 結果は unix time_t 時間でなければならない。
既定値: shadow:sscanf = no
shadow:fixinodes
		が有効の場合、このモジュールはスナップショット中のそれぞれの
		ファイルの見かけの inode 番号を、そのファイルのパスのハッシュ値で
		修正する。これは(たとえば GPFS のスナップショットのように)
		スナップショットがオリジナルのファイルと同じデバイス名+ inode
		番号を持つ場合に必要となる。(訳注:そのようなシステムにおいて)
		このオプションを設定しないでシャドウコピー UI の「リストア」
		ボタンを押すと、共有違反で失敗してしまう。
		
既定値: shadow:fixinodes = no
もしも 
		shadow:snapdirseverywhere  を有効にした場合、
		このモジュールは、現在のワーキングディレクトリに対する、
		現在のワーキングディレクトリおよびすべての上位ディレクトリ
		に対して、スナップショットディレクトリを見つけ出し、
		既定値のマウントポイントを使うのをやめる。このような
		動作の詳細については shadow:crossmountpoints
		を参照のこと。
		
たとえば、これが必要なところは、IBM の GPFS 中で 独立したファイルセットであるが、その他のファイルシステムと同様、 ファイルシステム中における特定のサブディレクトリのみを スナップショットすることをサポートする場合がある。
		shadow:snapdirseverywhere は、
		shadow:snapdir に依存し、それは相対パスが
		必要なことに注意。絶対パスを設定すると、
		shadow:snapdirseverywhere は無効になる。
		
		このオプションは、shadow:basedir
		とは非互換で、shadow:basedir で
		設定したものを無効化することに注意。
		
例: shadow:snapdirseverywhere = yes
既定値: shadow:snapdirseverywhere = no
		このオプションは、shadow:snapdirseverywhere = yes
		の場合に有効となる。
		このオプションを設定すると、snapdir を捜す時、マウントポイントを 1 つ
		見つけた時点で(検索を)終了せず、あり得るパス全体を通して検索する。
		
例をあげると、これが必要なのは、IBM の GPFS 中の独立した ファイルセットだが、他のファイルシステムでも同様に、 ファイルシステムの特定のサブツリーのみのスナップショットをサポートする 可能性がある。
		shadow:crossmountpoints は
		shadow:snapdir に依存し、それは相対パスが
		必要なことに注意。絶対パスを設定すると、
		shadow:crossmountpoints は無効になる。
		
		このオプションは、shadow:basedir
		とは非互換で、shadow:basedir で
		設定したものを無効化することに注意。
		
例: shadow:crossmountpoints = yes
既定値: shadow:crossmountpoints = no
		スナップショットがどんどん増えるため、ファイルシステムには、
		あるスナップショットを、たとえば、月次、週次、マニュアル、
		特別なイベントのようなものから、他と区別するような仕組みが
		必要である。そのため、そのようなファイルシステムでは、
		たとえば、時間ベースでない、変更可能な名前をスナップショットに
		つけるしくみのような、異なった方法でスナップショットにタグを
		つける方法を提供する。shadow:format
		のみでは、そのようなスナップショットを区別するのは困難である。
		このオプションパラメーターを使うことにより、ファイルシステム中
		のスナップショットディレクトリの名前に対して、いろいろな
		プレフィックスを指定することができるようになる。
		shadow:format と、shadow:delimiter
		パラメーターと一緒に、このパラメーターが設定された場合、
		ファイルシステム中のスナップショットディレクトリがとり得る
		名前を決定する。オプションは、基本的な正規表現(BRE)のみを
		サポートする。
		
		このオプションパラメーターは、shadow:snapprefix と
		shadow:format 間のデリミタとして
		使われる。このパラメーターは、shadow:snapprefix
		が設定されているときにのみ使われる。
		
既定値: shadow:delimiter = "_GMT"
ユーザーのホームディレクトリでシャドウコピーをサポートするには 以下の設定を行なう。
	[homes]
	vfs objects = shadow_copy2
	shadow:snapdir = /data/snapshots
	shadow:basedir = /data/home
        shadow:sort = desc
これはバックアップでも、アーカイブでも、バージョン管理のための 機能でもないことに注意。
Samba と Windows の双方において、vfs_shadow_copy2
	はエンドユーザーのための機能として設計されている。これはバックアップや
	アーカイブ機能を代替、もしくは拡張するものではないので、そのような認識
	は禁物である。バージョン管理機能が必要であれば、バージョン管理機能を
	実装する必要がある。