10
11

More than 5 years have passed since last update.

Windows 曜日単位のバックアップ作成バッチ

Posted at

はじめに

Windowsで、曜日単位で指定したフォルダをバックアップするバッチです。
gitサーバのデータフォルダをデイリーでバックアップする必要があったので作成しました。
その内容を共有します。

例ではC:¥scripts内にすべてのファイルを配置しています。
私はスケジューラから毎朝2:00にgitBackup.batを実行するようにしていました。

「タスクスケジューラの基本的な使い方(Windows 7/8/8.1編)」
http://www.atmarkit.co.jp/ait/articles/1305/31/news049.html

ファイル作成

gitBackup.bat

キックする対象のbatファイル。
以下の内容ですと平日のみバックアップを作成します。

gitBackup.bat
@echo off
echo 開始
cscript /b C:¥scripts¥wday.vbs
REM echo wday:%errorlevel%
if %errorlevel%==7 echo.
if %errorlevel%==6 BackupExec.bat 06_Friday
if %errorlevel%==5 BackupExec.bat 05_Thursday
if %errorlevel%==4 BackupExec.bat 04_Wednesday
if %errorlevel%==3 BackupExec.bat 03_Tuesday
if %errorlevel%==2 BackupExec.bat 02_Monday
if %errorlevel%==1 echo.

wday.vbs

上記ファイルから呼ばれる、曜日取得のスクリプトファイル。

wday.vbs
@echo off
echo 開始
cscript /b C:¥scripts¥wday.vbs
REM echo wday:%errorlevel%
if %errorlevel%==7 echo.
if %errorlevel%==6 BackupExec.bat 06_Friday
if %errorlevel%==5 BackupExec.bat 05_Thursday
if %errorlevel%==4 BackupExec.bat 04_Wednesday
if %errorlevel%==3 BackupExec.bat 03_Tuesday
if %errorlevel%==2 BackupExec.bat 02_Monday
if %errorlevel%==1 echo.

BackupExec.bat

ネットワーク上のドライブを作成し、ファイルコピー後にその設定を削除、という動作をさせています。
バッチ実行ユーザに権限が足りないとここで失敗するかもしれないので注意してください。

この例の場合、Cドライブ直下のgitblitフォルダを、ネットワーク上の別のマシンのbackup¥daily¥gitフォルダにコピーしています。

BackupExec.bat
@echo off
echo %1
set logfile="%date:‾0,4%-%date:‾5,2%-%date:‾8,2%_backup.log"
NET USE Z: /d /y
NET USE Z: ¥¥[IPアドレス]¥backup [パスワード] /USER:[ユーザ名]
C:¥Windows¥System32¥Robocopy.exe C:¥gitblit Z:¥daily¥git¥%1 /E /R:2 /W:10 /NP /LOG+:"%logfile%"
NET USE Z: /d /y

おわりに

曜日単位で作成されたバックアップフォルダは、翌週上書きされるので気を付けてください。
適宜、値を変更して使用してみてください。

何かの参考になりましたら幸いです。

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11