ゆるふわSEの日常♪

IT業界でゆるふわSE(ゆるーく楽に仕事をしたいw)になりたい人あーつまれ(*´▽`*)♪

【明日使えるバッチファイル】フォルダを丸ごとバックアップする第二弾~ちょっぴり業務用♪日付入りバックアップフォルダ作成、ログファイル作成、過去ログ削除機能付き✨~

おはこんばんちは!ゆるふわSEの「ちょここ」です(*´ω`*)

 

明日から使える?かもしれないソースを紹介していく明日使シリーズ!!!

バックアップの第二弾は日付入りバックアップフォルダの作成、そしてバックアップ時のログファイル作成、さらにたまっていく過去ログの削除機能もついているちょっぴりですが業務用に使えるかも?!なバッチのご紹介でーす♪

 

作成方法もそんなに難しくないですよ☆彡

では早速、紹介していくよ!

 

 

【テーマ☆彡】

日次でバックアップをとるにしても、いつのバックアップか分かるようにフォルダ名にバックアップ日とかつけたいなぁ。あと、ちゃんとバックアップできたかどうかのログファイルも欲しいし、それでいてログファイルがどんどんたまっていくのは嫌だから古いログの削除機能も欲しーなぁ・・・(´・ω・`)

よっしゃ、バッチ作るお(*´▽`*)

 

【使い方、処理内容☆彡】

バッチファイルを実行すると、コピー先に指定したフォルダ内にバックアップ日付を付けたフォルダ(例:2017-07-30_backup)を作成、その中にバックアップ元ファイルを丸ごと自動コピー(ミラーリング)します。

また、指定したログファイル格納フォルダに日付を付けたログファイル(例:2017-07-30_backup.log)を作り、ついでに過去30日を過ぎた過去ログについては削除します。(*´▽`*)

 

【そーすこーど☆彡】

@echo off

rem+-------------------------------------------
rem 作成日:
rem 作成者:
rem 更新日:
rem 更新者:
rem 処理内容:
rem+-------------------------------------------

rem 変数の設定
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
 
set filename=%yyyy%-%mm%-%dd%_backup

rem バッチファイルのあるフォルダ(カレントディレクトリ)に移動
pushd %0..

rem コマンドプロンプト画面をクリア
cls

echo robocopyによるバックアップ処理を実行します。
robocopy "C:\backup_from" "D:\backup_to\%filename%" /MIR /R:0 /W:0 /LOG:"D:\log\%filename%.log" /NP /NDL /TEE /XJD /XJF
echo robocopyによるバックアップ処理を実行しました。

echo 30日以上前の過去ログ削除を実行します。
forfiles /p D:\log /d -30 /c "cmd /c del @file"
echo 30日以上前の過去ログ削除を実行しました。

pause
exit

 

【解説☆彡】 ひな形以外の部分(赤字)を解説していくよー(*´ω`*)

①日付の変数設定

set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%

⇒yyyyに実行したときの年(例:2017)、mmに月(例:07)、dd(例:30)に日が入るようにしています。

※下記参考リンクです。

www.atmarkit.co.jp

tipstour.net

 

②ファイル名の変数設定

set filename=%yyyy%-%mm%-%dd%_backup

⇒ファイル名をyyyy-mm-dd_backup(例:2017-07-30_backup)で作成できるようにしています。

 

③バックアップ処理

robocopy "C:\backup_from" "D:\backup_to\%filename%" /MIR /R:0 /W:0 /LOG:"D:\log\%filename%.log" /NP /NDL /TEE /XJD /XJF

⇒「robocopy」コマンドによりコピー元フォルダ(C:\backup_from)の中身をコピー先フォルダ(D:\backup_to\%filename%)にコピーします。

※コピー先の%filename%(例:2017-07-30_backupフォルダ)は自動で作成されます。

ログファイル格納フォルダ(D:\log以下)に%filename%.log(例:2017-07-30_backup.log)の名前でログファイルが作成されます。

※下記参考リンクです。

amaotolog.com

 

④過去ログの削除

forfiles /p D:\log /d -30 /c "cmd /c del @file"

⇒D:\log以下に作成された過去ログの中で30日以上経過しているログを削除します。 

※下記参考リンクです。

blog.putise.com 

これをタスクスケジューラで日次実行すれば、ばっちりバックアップ運用の自動化が実現できますね(●´ω`●)

 

でゎでゎ☆彡