- ベストアンサー
バッチファイルによる世代バックアップ
c:\AAA\hh.xlsを d:\BBB\CCC1~CCC3というフォルダに3世代分の保存がしたいです。 最初にバッチファイルを実行すると、CCC1に保存し、 2回目に実行すると、CCC1には既にファイルが保存されているので、 CCC2に保存します。 3回目はCCC3に保存します。 4回目は、また、CCC1に上書き保存し、5回目はCCC2、6回目はCCC3に上書き保存します。 このように過去3回分のバックアップを保存したいのですが、バッチファイルで可能なのでしょうか? 教えてください。お願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
同じ動きではありませんが、単に、 ccc2 → ccc3 へのコピー ccc1 → ccc2 へのコピー オリジナル → ccc1 へのコピー という一連のコピーを順番に実行するように書けば、同じ効果はあると思いますが。 あと、 step.dat のような「どこにコピーするか」を示すだけのファイルをひとつ作って if exist d:\ccc3\step.dat ( move d:\ccc3\step.dat d:\ccc2 copy c:\aaa\hh.xls d:\ccc3\ exit) if exist d:\ccc2\step.dat ( move d:\ccc2\step.dat d:\ccc1 copy c:\aaa\hh.xls d:\ccc2\ exit) if exist d:\ccc1\step.dat ( move d:\ccc1\step.dat d:\ccc3 copy c:\aaa\hh.xls d:\ccc1\ exit) rem 最初のコピーに対応 echo dymmu > d:\ccc3\step.dat copy c:\aaa\hh.xls d:\ccc1\ で、できるのかな? (未確認です)
その他の回答 (4)
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
質問の意図とは少し違いますが、3つのバックアップを取るときに、 バックアップ1:月・水・金 バックアップ2:火・木・土 バックアップ3:日 のような運用もありかと思います。 きもちとしては、 ・バックアップは実質2世代あれば、なんとかなるだろう。 ・もしも、もとファイルが壊れてしまったら、次のバックアップで、バックアップファイルがひとつ(壊れたファイルがコピーされて)壊れてしまう。日曜日にバックアップを取れば、(直近ではなくても)バックアップが全部壊れるまでに気づく可能性がちょっと高いだろう です。 こういう運用であれば、たとえば、 http://www.atmarkit.co.jp/fwin2k/win2ktips/280sw_week/sw_week.html を参考にして、曜日毎にバックアップ先を切り替えることが可能です。 もしかして参考になれば。
お礼
回答ありがとうございました。 大変興味深くおもしろい記事でした。
- maesen
- ベストアンサー率81% (646/790)
1日1回のバックアップで良いのでしたら、 見たところWindows OSのようですので、それぞれのフォルダにコピーするバッチをタスクスケジューラで実行すれば良いと思います。 CCC1にコピーするバッチをc1.bat CCC2にコピーするバッチをc2.bat CCC3にコピーするバッチをc3.bat とすると タスク1(トリガー:毎日 間隔3 開始2012/11/22 01:00:00 操作:c1.bat実行) タスク2(トリガー:毎日 間隔3 開始2012/11/23 01:00:00 操作:c2.bat実行) タスク3(トリガー:毎日 間隔3 開始2012/11/24 01:00:00 操作:c3.bat実行) こんな感じで3日に一度実行するバッチを3つ作成して1日差で開始すればいいです。 この例ではバッチファイルが3つ必要ですが、 コピー先をパラメータでもらうようなバッチファイルにすれば、操作でパラメータを与えることでバッチファイルを1つにすることも可能です。
お礼
回答ありがとうございます。 タスクスケジュラーという手もあるのですね。
- korokoro17
- ベストアンサー率55% (414/743)
CCC1は常に最新のファイル、CCC2は2番目に新しいファイル、CCC3は一番古いファイルとしてもいいなら簡単です。 copy c:\AAA\hh.xls d:\BBB\CCC3\ ren d:\BBB\CCC1 TMP1 ren d:\BBB\CCC3 CCC1 ren d:\BBB\CCC2 CCC3 ren d:\BBB\TMP1 CCC2 xcopyの/dスイッチを使ってerrorlevelで制御すれば、更新されているときだけの実行も出来ます。
お礼
回答ありがとうございました。 なるほどです。
- yambejp
- ベストアンサー率51% (3827/7415)
バッチファイルを3つ用意して、 時間差で起動させればいいのでは?
お礼
回答ありがとうございました。 時間差だと同じバックアップが3つ出来そうなので、日にち差が良いと思いました。 日にち差で、3つのバッチファイルを起動するにはどうすれば良いのか、お分かりなら教えていただきたいです。
お礼
回答ありがとうございました。 期待通りに行きそうです。