robocopyでバックアップした時のログファイルを日付毎に作成する方法(+過去の古いファイルの削除方法も)
robocopyコマンドでログファイルを出力する時、backup.logのようなファイル名になっていると思います。ログファイルを上書きする設定の場合、バックアップしたログの履歴が残りませんので、少し困りますよね。
この記事では、robocopyのログファイルを2012-07-04_backup.logのように日付毎に作成する方法を紹介します。
[10/30追記]
ログファイルを自動的に削除する方法をコメント欄に追記しました。
「1週間分だけファイルを残す」も簡単にできて便利です。
いっぱちさん、ありがとうございました!
目次
こんなログファイルが出力できます
バックアップを行った日付毎にファイルが並んでいますね。
エクスプローラでログファイルの一覧を眺めるだけで、
- バックアップが実行された日付
- バックアップが終了した時刻
- ファイルの追加・変更・削除があった量
がわかりますので、便利ですよ。
バックアップログは日付毎に残した方が良い
通常、robocopyでログファイルを出力する時は、
/LOG:"c:\work\backup.log"
のようなパラメータを指定します。
このパラメータでは、バックアップする度に同じファイルが上書きされてしまいます。
ログファイルにはもう一つのパラメータがあります。
/LOG+:"c:\work\backup.log"
のように、「+」を付けることで追記モードになります。
しかし、常に同じファイルに追記しますので、ファイルサイズがどんどん大きくなってしまいます。
「ログファイルはその都度確認できれば良い!」という場合は上書きモードで問題ないですが、ファイルサーバのバックアップなどの場合には、やはり、バックアップの実績として日付毎のログを残しておきたいところです。
Windows 7とWindows Server 2003で実際に使ってます
以下で説明する方法は私が、
- Windows 7
- Windows Server 2003
のバックアップで実際に使っている方法です。
7 と 2003で実行できていますので、
- Windows Vista
- Windows XP
- Windows Server 2008
でも同じ方法が使えると思います。
試してみてくださいね。
コマンドプロンプトのdateコマンドを使います
この記事では、以下のようなバッチファイルを作成しました。
このバッチファイルを例にして、修正してみましょう。
以下のように修正すると、ログファイルが2012-07-04_backup.logのようになります。
set logfile="c:\work\%date:~0,4%-%date:~5,2%-%date:~8,2%_backup.log" robocopy "C:\ライブラリ" "J:\バックアップ\ライブラリ" /MIR /R:0 /W:0 /LOG+:"%logfile%" /NP /NDL /TEE /XJD /XJF
ここで、年月日の数字を設定しています。
例えば、%date:~0,4%を簡単に説明すると、
- バッチファイル内なので、コマンドの両側に「%」を付けている。
- dateコマンドを実行する。
(たいていのOSでは2012/07/04が取得できる) - 取得した文字の先頭(0文字目)から4文字を抜き出す。
(ここでは2012となる)
となります。
要は「年月日の日付から数字だけを抜き出している」だけですね。
「2012/07/04」という文字をそのまま使わないのでは、「/」がファイル名として使えないからです。
バッチファイルを実行してみる
修正したバッチファイルを実行してみると、「2012-07-04_backup.log」のようなログファイルが作成されます!
ファイル名がおかしい場合は、日付の数字がうまく取得できていませんので、「文字を抜き出す数字(開始位置と抜き出す文字数)」を調整してくださいね。
まとめ
ログファイルを日付毎に作成しておくと、バックアップが正常に行われているかを確認する時に便利です。
ログファイルが必要なくなったら、
- 削除する。
- 圧縮しておく。
などをしておくと増えすぎなく良い感じですよ。
私は削除派です。
一度、お試しくださいね。
コメント
トラックバックは利用できません。
コメント (2)
ログファイルが必要なくなったら、削除したいのですが、
例えば、古いものは自動削除して1週間分だけ残していく方法はありますか?
いっぱちさん、コメントありがとうございます。
過去のファイル削除は、forfilesコマンドで出来ますよ。
★実行前の注意!
ファイルを削除するdelコマンドを実行しますので、
「フォルダパス」や「対象となるファイル」の指定には注意してくださいね。
———————————-
■コマンド例
ログファイルを1週間分だけ残し、それより以前は削除する。
forfiles /P "c:\work" /M "*.log" /D -7 /C "cmd /c del @file"
■パラメータ説明
/P :処理対象のフォルダパス
/M :処理対象のファイル(”*.log”の場合、「拡張子がlogのファイル全て」になります)
/D :最終更新日の日付指定(-7の場合、7日より前になります)
/C :実行したいコマンド
※delコマンドは”内部コマンド”なので cmd /c を付ける必要があります。
■備考
Windows Vista以降、Windows Server 2003以降で使えるようです。
———————————-
バックアップ用のバッチファイル内にコマンドを追加しておけば、
バックアップのたびに自動的に削除してくれます。
私も使ってみましたが、なかなか便利でした。
一度お試しくださいね。