VSSバックアップについて
仕事中だけどメモ書き。
VSSのバックアップを取るための、バッチファイルを作成しタスクスケジューラから毎日起動させるためのメモ。
使用するのは「Visual SourceSafe 2005 」であり、2パターンのバックアップ方法があるとのこと。
①「ssarc.exe」を使用し、アーカイブとしてバックアップを取得する方法。
まず1つ目。バックアップを取るために使用なツールである「ssarc.exe」を使用する方法。
こちらは「C:\Program Files\Microsoft Visual SourceSafe」配下にいる。見つからない場合は検索をすること。
<VSSBackup.bat>
set date=%date:/=%
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%cd C:\Program Files\Microsoft Visual SourceSafe
ssarc.exe -D- -I-Y -YAdmin -s"<srcsafe.ini対象ディレクトリ>" "<バックアップアーカイブ出力先+ファイル名+.saa>" $/
1年越しに問題が発覚したので、再度修正版を載せます。
きれいになりました。
REM VSSバックアップバッチ
REM 対象プロジェクト:XXXXXXXXXXXXXREM 必要により下記項目を修正して下さい。
REM ===========================
REM VSSインストール先
cd C:\Program Files\Microsoft Visual SourceSafeREM VSSバックアップ元
set VSS=XXXXXXXXXXXXXREM VSSバックアップ先
set localDir=XXXXXXXXXXXXXREM ===========================
set dt=%date:/=%
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%ssarc.exe -d- -I-Y -YAdmin -s%VSS% %localDir%\archive\%dt%_%hh%-%mm%-%ss%_Backup.ssa $/
XCOPY /D /S /R /Y /I /K %VSS% %localDir%\directory\%dt%_%hh%-%mm%-%ss%\
※修正点として・・・
「set date=%date:/=%」が問題でした。「set dt=%date:/=%」に修正しています。
以下色々と解説。
- ssarc.exe:バックアップ取得に必要なモジュール
- -D-:アーカイブした項目をデータベースから削除しない。どうやらバックアップをした後、削除するというのがVSSではデフォルトらしい?
- -I-Y:-I-では、Yes/Noの質問を自動でNで回答してしまう。Yを付与することで解消される。
- -YAdmin:-Y[ユーザ名]であるが、そもそもバックアップがAdminのみが実施可能っぽいのでAdminを指定。
- -s"<safe.ini対象フォルダ>":パスを指定するため、”***" ダブルクォーテーションでの括りは必要。
- "<バックアップアーカイブ出力先+ファイル名+.saa>":.saaは必須。参考までに[<出力フォルダ>%date%_%hh%-%mm%-%ss%_Backup.ssa]にて作成。
- $/:VSSのバックアップ対象となっており、全てであるため「$/」と記載。
②フォルダコピーにてバックアップを取得する方法。
2つ目として、srcsafe.iniと同配下にある
- data
- temp
- users
を全て取得しておくという単純なもの。
面倒なので、XCOPYにて一つ上の階層から全てコピーを実施してしまおう。
<VSSBackup.bat>
set date=%date:/=%
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
XCOPY /D /S /R /Y /I /K "<コピー元>" "<コピー先>%date%_%hh%-%mm%-%ss%\"
ついでにXCOPYのオプションについて 簡単に説明。
- /D:コピー先に同名のファイルが存在する場合に更新日が新しいファイルのみコピーする。
- /S:ファイルが存在する場合のみディレクトリごとコピーする。
- /R:読み取り専用属性のファイルも上書きコピーできるようにする。
- /Y:同名のファイルが存在する場合、上書きの確認を行わない。
- /I:コピー先のディレクトリが存在しない場合は新規にディレクトリを作成する。
- /K:通常は解除される読み取り専用属性を維持したままコピーする。
これだけ書いておけば見返したとき分かるっしょ。
復元についてはこちら。