会社を卒業したのんちおじさん。

人生は知恵と工夫と思いやり!
優しさほど強いものはなく、本当の強さほど優しいものはない -ラルフ・W・ソックマン-

結局RoboCopyを使いました、名前がすごいでしょ、ロボコップみたいで・・。

2014-10-20 18:29:30 | いろんなこと
最近PCのバックアップに目覚めましてここにも何度か書きました。

どんな方法でバックアップしたら良いのかしばらく考えていたのです。

1.Windows バックアップ
2.Norton バックアップ
3.BunBackup

1.は重そうで仮に復元する必要が出た場合重複ファイルがたくさんできるので却下。
2.は有償なのとやはり重そうなので却下。

そこで軽くて使いやすいと評判の3.BunBackupを使い始めたのです、でも気が付くと途中で止まっているのです、何故止まっているかというと上書きするかどうかを聞きに来ているのです、ヘルプを元に何をどう設定しても毎回聞きに来るのです。

そこでほかに良い方法はないのかと・・・、そう言えばxCopyなんてのがありました、でも今ではRoboCopyなんていう超強力なコピーツールがあることを思い出しました、いろいろ調べてみると皆さん思いは同じでこれをバックアップ用として使っている人がことのほか多いのです。

でも面倒くさそうです、パラメータがやたら多いのですよ、そこでそれのGUI版のRichCopyもダウンロードして設定してみましたがこれだと複数の場所のバックアップは出来ません。

そこで結局RoboCopyをバッチファイルの中で2回使う方法を取りました、今日一日掛けてかなり苦労して以下のバッチプログラムを作りました、でもこれだとコマンド・プロンプトがどうしても開いてしまうのです、そこで"Wscript.Shell"というのを使ってその中から走らせるようにしました。

それをタスク・スケジューラの中から毎日午後1時に実行するようにセットしました。

@echo off

set EXE=robocopy.exe
set LOG=C:\BackupLog\_bk.log

setlocal

set SRC=D:\
set TGT=E:\Backup
set XF1=".apdisk"
set XF2=".DS_Store"
set XD1="D:\$AVG"
set XD2="D:\MP*"
set XD3="D:\msdownld.tmp"
set XD4="D:\STVLERec"
set XD5="D:\VAIO Entertainment"
set XD6="D:\SP Edition"
set XD7="D:\SP Edition 2"
set XD8="D:\NOR*\OneDrive"
set XD9="D:\NOR*\Google ドライブ"
set XD10="D:\One*Temp"
set XD11="D:\音声*"
set XD12="D:\My Fa*"
set XD13="D:\NOR*\Dropbox"
set XD14="D:\NOR*\eTeks"
set XD15="D:\NOR*\Pictures"
set XD16="System Volume Information"
set XF=%XF1% %XF2%
set XD=%XD1% %XD2% %XD3% %XD4% %XD5% %XD6% %XD7% %XD8% %XD9% %XD10% %XD11% %XD12% %XD13% %XD14% %XD15% %XD16%
set OPT=/COPYALL /XO /XF %XF% /XD %XD% /E /R:0 /W:0 /NP /XJD /XJF /MIR

if not exist %SRC% goto err_msg
if not exist %TGT% mkdir %TGT%

%EXE% %SRC% %TGT% %OPT% /LOG:%LOG%
attrib -H -S %TGT%

endlocal

setlocal

set SRC="D:\NORIO\Google ドライブ"
set TGT="D:\NORIO\OneDrive"
set OPT=/COPYALL /XO /E /R:0 /W:0 /NP /XJD /XJF /MIR

if not exist %SRC% goto err_msg

%EXE% %SRC% %TGT% %OPT% /LOG+:%LOG%
attrib -H -S %TGT%

set _dt=%date:~0,4%-%date:~5,2%-%date:~8,2%
set _tm=%time:~0,2%_%time:~3,2%_%time:~6,2%
ren %LOG% "%_dt%-%_tm%_bk.log"

goto end

:err_msg
echo コピー元となる %SRC% が存在しません。
goto end

:end
endlocal

バッチプログラムを作るのって結構楽しいのですよ、久しぶりに頭を使いました。

DOSの時代からPCに携わってきましたので本当に良かったなと思っています。

PS.
肝心なことを書き忘れました。
上記を「Rb.bat」という名前で保存し・・、

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c Rb.bat", vbhide

この2行を「Rb.vbs」という名前で「Rb.bat」と同じ場所に保存します、それをタスクスケジューラに載せるのです。