C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[12]: タスクスケジューラを用いたバックアップ


(過去ログ 49 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■26647 / inTopicNo.1)  タスクスケジューラを用いたバックアップ
  
□投稿者/ ooo (16回)-(2008/10/16(Thu) 15:12:29)

分類:[Windows 全般] 

皆様

お世話になります。

このたびタスクスケジューラを用いてあるフォルダの日次バックアップを行いたく思いまして
投稿いたしました。

■環境
・XP Pro
・メモリ1G

バックアップ先はハードディスクです。

例えば、C:\DISKTEST のフォルダを F:\BK にコピーするという
形をとる場合、コマンドプロンプトでどのように記述すればよいのでしょうか。

参考情報(URL)等でも構いませんので、ご教授ください。

よろしくおねがいします。
引用返信 編集キー/
■26661 / inTopicNo.2)  Re[1]: タスクスケジューラを用いたバックアップ
□投稿者/ やじゅ (707回)-(2008/10/16(Thu) 17:58:45)
やじゅ さんの Web サイト
2008/10/16(Thu) 19:02:13 編集(投稿者)

No26647 (ooo さん) に返信
> このたびタスクスケジューラを用いてあるフォルダの日次バックアップを行いたく思いまして
> 投稿いたしました。
>
> バックアップ先はハードディスクです。
>
> 例えば、C:\DISKTEST のフォルダを F:\BK にコピーするという
> 形をとる場合、コマンドプロンプトでどのように記述すればよいのでしょうか。
>

BACKUP.BATファイルを作成
BACKUP.BATの中身
XCOPY C:\DISKTEST F:\BK /S 

タスクスケジューラで、BACKUP.BATを指定する。

タスク・スケジューラをコマンド・プロンプトから制御する
http://www.atmarkit.co.jp/fwin2k/win2ktips/582schtasks/schtasks.html

追記しました。
xcopyでファイルをバックアップする
http://www.atmarkit.co.jp/fwin2k/win2ktips/446xcopy/xcopy.html
xcopyの主なオプション
http://www10.plala.or.jp/kobayan/command.html
引用返信 編集キー/
■26663 / inTopicNo.3)  Re[2]: タスクスケジューラを用いたバックアップ
□投稿者/ 774RR (226回)-(2008/10/16(Thu) 18:12:41)
XCOPY に /S とか必要なオプションがあれば追記しておくといいかな
あと権限に注意 (タスクスケジューラで起動されるタスクは必ずしも「自分」ではない)

引用返信 編集キー/
■26670 / inTopicNo.4)  Re[3]: タスクスケジューラを用いたバックアップ
□投稿者/ PINO (3回)-(2008/10/16(Thu) 21:45:36)
2008/10/16(Thu) 21:47:26 編集(投稿者)
2008/10/16(Thu) 21:47:15 編集(投稿者)
2008/10/16(Thu) 21:47:01 編集(投稿者)

<pre><pre>下記方法にて実現可能。

■VBScript
  <?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?> 
- <package>
- <job id="MyBackUp">
  <?job error="true" debug="true" ?> 
  <object id="objFs" progid="Scripting.FileSystemObject" /> 
  <resource id="backup_config">C:\DISKTEST
  </resource> 
- <script language="VBScript">
- <![CDATA[ 
On Error Resume Next
Const MYFLD="F:\BK"
aryCnf=Split(getResource("backup_config"),Chr(13) & Chr(10))
For i=0 To UBound(aryCnf)
	strPth=Trim(aryCnf(i))
	If Not IsNull(strPth) And strPth<>"" Then
		strDst=objFs.BuildPath(MYFLD,FormatDateTime(Date,1))
		If Not objFs.FolderExists(strDst) Then objFs.CreateFolder(strDst)
		aryDst=Split(Right(strPth,Len(strPth)-InStrRev(strPth,":")+1),"\")
		For j=1 To UBound(aryDst)
			strDst=objFs.BuildPath(strDst,aryDst(j))
			If Not objFs.FolderExists(strDst) Then objFs.CreateFolder(strDst)
		Next
		objFs.CopyFolder objFs.BuildPath(strPth,"*"),strDst,True
		objFs.CopyFile objFs.BuildPath(strPth,"*"),strDst,True
	End If
Next
WScript.Echo("バックアップ処理が完了しました。")


  ]]> 
  </script>
  </job>
  </package>

上記PGMをBackUp.wsfとしてタスクスケジューラに設定

</pre></pre>

引用返信 編集キー/
■26947 / inTopicNo.5)  Re[4]: タスクスケジューラを用いたバックアップ
□投稿者/ ooo (17回)-(2008/10/23(Thu) 13:44:00)
皆様

 ご回答いただきまして、ありがとうございます。

やじゅさんの下記回答を参考に

>追記しました。 
>xcopyでファイルをバックアップする
http://www.atmarkit.co.jp/fwin2k/win2ktips/446xcopy/xcopy.html
>xcopyの主なオプション
http://www10.plala.or.jp/kobayan/command.html

バッチを作成しましてタスクスケジューラに設定を施しました。

■バッチロジック
-----------------------------------------------------------------------
if exist E:\. net use E: /delete
if not exist E:\. net use E:

set logfile=R:\SRV53BK_Log\copyall.log
xcopy \\srv53\TEST\TESTProjectフォルダ E:\NEW_BK /D /S /E /H /C /Y /R >> %logfile%
-----------------------------------------------------------------------

■内容
xcopyコマンドにて【\\srv53\TEST\TESTProjectフォルダ】を【E:\NEW_BK】にコピーするという
単純な内容なのですが、

上記のプログラムを改変したく思っています。
@set logfile=R:\SRV53BK_Log\copyall.log の部分で
  copyall.logの頭に年月日をつけたい。
  →20081023_copyall.log
  といったような形にしたい。

Axcopy \\srv53\TEST\TESTProjectフォルダ E:\NEW_BK /D /S /E /H /C /Y /R >> %logfile% の部分で
  E:\NEW_BKの頭に年月日をつけたい。
  →E:\20081023_NEW_BK
  といったような形にしたい。

  @Aの共通では年月日をつけるということ

  Aの場合は 1.Eドライブに20081023_NEW_BKを新規に生成する
             2.そのフォルダに対し\\srv53\TEST\TESTProjectフォルダの内容をコピーする
   といった流れになると思うのですが、
  
どのようなロジックになりますでしょうか。

参考情報でも構いませんので、どうかご教授ください。

引用返信 編集キー/
■26948 / inTopicNo.6)  Re[5]: タスクスケジューラを用いたバックアップ
□投稿者/ 774RR (233回)-(2008/10/23(Thu) 14:29:11)
それは単純に「cmd.exe によるバッチ」の質問だということで。
答えを書いちゃうのは簡単だが、まずは自分で調べて味噌
ヒント
・コマンドプロンプトから SET コマンドのヘルプを見る set /?
・環境変数の置換と、動的環境変数一覧の説明をじっくり読む
となんとかなる。

引用返信 編集キー/
■26953 / inTopicNo.7)  Re[6]: タスクスケジューラを用いたバックアップ
□投稿者/ ooo (18回)-(2008/10/23(Thu) 17:24:18)
774RRさん

ご回答いただきありがとうございます。

>・コマンドプロンプトから SET コマンドのヘルプを見る set /?
>・環境変数の置換と、動的環境変数一覧の説明をじっくり読む
>となんとかなる。

上記を参考に下記PGMを作成してみました。

---------------------------------------------------------------------
rem --------------------------------------------------------------------------------------------
rem プログラム名称 :SRV53日次バックアップ
rem プロジェクト名 :TEST
rem 作成者         :ooo
rem 作成日         :2008/10/23
rem 処理概要       :SRV53のフォルダをハードディスクに移行する
rem --------------------------------------------------------------------------------------------

 rem @Eドライブをマッピング
  if exist E:\. net use E: /delete
  if not exist E:\. net use E:

 rem Aシステム日付を環境変数にて定義
  set DT=%date:/=% 

 rem Bディレクトリを作成 日付フォルダ
  mkdir E:\Version管理\%DT%

 rem Cコピー元のフォルダパスを変数にて定義
  set Copymoto=\\srv53\TEST\TESTProjectフォルダ

 rem Dコピー先のフォルダパスを変数にて定義 Bにて生成したフォルダパスを指定
  set Copysaki=E:\Version管理\%DT%

 rem Eログファイルの格納場所を定義
  set logfile=R:\SRV53BK_Log\%DT%_copyall.log
  
 rem FXCOPYコマンドを実行する
  xcopy %Copymoto% %Copysaki% /D /S /E /H /C /Y /R >> %logfile%
---------------------------------------------------------------------

上記プログラムで

>Aの場合は 1.Eドライブに20081023_NEW_BKを新規に生成する
>           2.そのフォルダに対し\\srv53\TEST\TESTProjectフォルダの内容をコピーする

この問題は解決できましたが、

>@set logfile=R:\SRV53BK_Log\copyall.log の部分で
>  copyall.logの頭に年月日をつけたい。
>  →20081023_copyall.log
>  といったような形にしたい。

この問題が解決できません。
 rem Eログファイルの格納場所を定義
  set logfile=R:\SRV53BK_Log\%DT%_copyall.logの部分がうまくいっていないようで

R:\SRV53BK_Log\の中には「20081023」というファイルが生成されてしまいます。

「20081023_copyall.log」
を作成したいのですが・・・

宜しくお願いいたします。

引用返信 編集キー/
■26998 / inTopicNo.8)  Re[7]: タスクスケジューラを用いたバックアップ
□投稿者/ 774RR (234回)-(2008/10/24(Fri) 12:51:32)
ほとんど完璧な答えが出ていると思うぞ。 %DATE:/=% でばっちりのはずだ。
んで、提示のファイルの何が悪いのかは良くわからない(見た限りではうまく動くような気がする)
ウチでは %DT%_copyall.log でちゃんと 20081024_copyall.log になるよん。

というわけで、バッチファイルのデバッグしてみるといいだろう。
バッチファイル自体はタスクスケジューラで起動する必然はないわけで、
作ったバッチファイルを手で実行してみよう。
xcopy を実行してしまうとコピーが始まってしまうので rem にでもしておき、
echo されるコマンドラインを見てみるといいと思うよ

引用返信 編集キー/
■27005 / inTopicNo.9)  Re[8]: タスクスケジューラを用いたバックアップ
□投稿者/ ooo (19回)-(2008/10/24(Fri) 14:35:56)
774RRさん

ご回答いただきましてありがとうございます。

>xcopy を実行してしまうとコピーが始まってしまうので rem にでもしておき、
>echo されるコマンドラインを見てみるといいと思うよ

上記を参考にデバッグしてみました。

---------------------------------------------------------------
rem Aシステム日付を環境変数にて定義
  set DT=%date:/=% 
rem Eログファイルの格納場所を定義
  set logfile=R:\SRV53BK_Log\%DT%_copyall.log

echo %logfile%

---------------------------------------------------------------
echoの結果は

【R:\SRV53BK_Log\20081024 _copyall.log】

となりました。
つまり「20081024」の後に半角スペースが存在しているため、
生成されるフォルダは「_copyall.log」部を認識できずに、「20081024」といったファイルが生成されてしまうということでした。

そこで、
---------------------------------------
rem Aシステム日付を環境変数にて定義
  set DT=%date:~0,4%%date:~5,2%%date:~8,2%
---------------------------------------
上記に変更したところ、うまくいきました。

%date%で定義されるシステム日付 「2008/10/24」の値を
部分的に切り取りました。

この件についてはなんとか解決です。

ありがとうございました。

解決済み
引用返信 編集キー/
■27061 / inTopicNo.10)  Re[9]: タスクスケジューラを用いたバックアップ
□投稿者/ ooo (20回)-(2008/10/27(Mon) 09:38:51)
ooo

コマンドプロンプト batスクリプト

ディレクトリ削除の rmdir キーワードについての質問になります。

rmdir /s だとyesかno 入力しなければ処理は進みませんし
rmdir /q だと対象フォルダの下位にフォルダやファイルが存在する場合、

「ディレクトリが空ではありません」というメッセージが表示され、削除できません。

------------------------------------------------------------------------------------------------
rem --------------------------------------------------------------------------------------------
rem プログラム名称 :SRV53日次バックアップ
rem プロジェクト名 :TEST
rem 作成者         :ooo
rem 作成日         :2008/10/27
rem 処理概要       :SRV53のフォルダをハードディスクに移行する
rem --------------------------------------------------------------------------------------------

 rem @Eドライブをマッピング
  if exist E:\. net use E: /delete
  if not exist E:\. net use E:
 
 rem AVBscriptを呼び出し変数にセット
  cscript /b R:\01_SRV53_BackUp\DATELOGIC.vbs
   set KEYS=%errorlevel%
 
 rem B1週間前のフォルダを削除
 rmdir /Q E:\Version管理\%KEYS% 
 
 rem C変動確認用ログファイルの格納場所を定義
  set logfile=R:\SRV53BK_Log\copydiff.log
  
 rem DXCOPYコマンドを実行する(変動確認用コピー)
  xcopy \\srv53\TEST\TESTProjectフォルダ E:\NEW_BK /D /S /E /H /C /Y /R >> %logfile%

 rem Eシステム日付を環境変数にて定義
  set DT=%date:/=% 

 rem Fディレクトリを作成 日付フォルダ
  mkdir E:\Version管理\%DT%

 rem Gコピー元のフォルダパスを変数にて定義
  set Copymoto=\\srv53\TEST\TESTProjectフォルダ

 rem Hコピー先のフォルダパスを変数にて定義 Fにて生成したフォルダパスを指定
  set Copysaki=E:\Version管理\%DT%

 rem Iログファイルの格納場所を定義
  set logfile=R:\SRV53BK_Log\copyall.log

 rem JXCOPYコマンドを実行する
  xcopy %Copymoto% %Copysaki% /D /S /E /H /C /Y /R >> %logfile%

------------------------------------------------------------------------------------------------

上記プログラムで 
rem B1週間前のフォルダを削除
の部分を実行させて正常に、ディレクトリを削除する方法はありますでしょうか?

たびたびすみませんが。どうか宜しくお願いします。

引用返信 編集キー/
■27063 / inTopicNo.11)  Re[10]: タスクスケジューラを用いたバックアップ
□投稿者/ 774RR (236回)-(2008/10/27(Mon) 10:14:25)
2008/10/27(Mon) 10:15:50 編集(投稿者)

rmdir /q /s E:\バージョン管理\%KEYS%
ではだめかいの
# 編集: UNIX の rm -fr とごっちゃにしてた cmd の rmdir は /q /s だ

っていうか、少なくともソースコードのバージョン管理ならこんな原始的手段は使わずに
Mercurial とか subversion と VisualSourceSafe とか使うべきだ。

ローカルディスクのバックアップが目的ならサーバディスクにコピーするのも可だけど
それではサーバ故障時の対策にはなっていない。
火事や地震対策にもなっていない。
その辺まで考えておかないといざというとき役に立たないかもしれないぜ

ウチのバックアップは
毎日別の LTO に取っている+1週間前のテープは別の建物に保管
とやってるよ
引用返信 編集キー/
■27066 / inTopicNo.12)  Re[10]: タスクスケジューラを用いたバックアップ
□投稿者/ 渋木宏明(ひどり) (933回)-(2008/10/27(Mon) 10:58:25)
渋木宏明(ひどり) さんの Web サイト
> rem JXCOPYコマンドを実行する
> xcopy %Copymoto% %Copysaki% /D /S /E /H /C /Y /R >> %logfile%

robocopy の方がいいような。
引用返信 編集キー/
■27071 / inTopicNo.13)  Re[11]: タスクスケジューラを用いたバックアップ
□投稿者/ ooo (21回)-(2008/10/27(Mon) 13:53:43)
774RRさん
渋木宏明(ひどり)さん

ご回答いただきましてありがとうございます。

>rmdir /q /s E:\バージョン管理\%KEYS%

上記で、Y/Nのメッセージは出力されずに削除が可能でした。
さすがです。ありがとうございます。

自分でも色々調べてみました
rmdir /? では /q /s の説明が掲載されているのみで、

rmdir /q /s の連携コマンドについては説明がなされていなかったため、
わかりませんでした。

すみません。

>ローカルディスクのバックアップが目的ならサーバディスクにコピーするのも可だけど
>それではサーバ故障時の対策にはなっていない。
>火事や地震対策にもなっていない。
>その辺まで考えておかないといざというとき役に立たないかもしれないぜ

確かに仰るとおりだと感じております。
ただ、今回は自分のコマンドスクリプトの学習のために行っていることであって、
本番用として適用させるためではありません。

 #それでは意味はないような気もするが。

ご指摘いただきましてありがとうございます。

渋木宏明(ひどり)さん

>robocopy の方がいいような。

robocopyというコマンドもあるんですね。
初めて知りました。
 → http://www.atmarkit.co.jp/fwin2k/win2ktips/877robomir/robomir.html

上記を参考に検討したいと思います。

ご教授いただきありがとうございました。

解決済み
引用返信 編集キー/
■27073 / inTopicNo.14)  Re[12]: タスクスケジューラを用いたバックアップ
□投稿者/ みきぬ (180回)-(2008/10/27(Mon) 14:47:34)
No27071 (ooo さん) に返信
> 自分でも色々調べてみました
> rmdir /? では /q /s の説明が掲載されているのみで、
>
> rmdir /q /s の連携コマンドについては説明がなされていなかったため、
> わかりませんでした。
>
使い方の説明で、RMDIR [/Q] [/S] って書かれていたら、組み合わせても使えます。
もし、/Q と /S のうち片方しか使えないのであれば、↓のように説明されているはずです。

RMDIR [/Q | /S]

特定のオプションとは組み合わせできなかったり、既に別のオプションの内容を含んでいる場合はそういう説明が書いてあるはずです。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -