注意ポイント
WindowsServerからのバックアップするバッチファイルをタスクスケジュールして使っていますが、バックアップされません!
手動ではバックアップできるのに?
WinSCPを使ってコマンドラインからの実行をバッチファイルを作成して、Windowsのタスクスケジューラーで定期的に実行させてバックアップを別のサーバーに蓄積していました。
手動で実行させれば思惑どうりの動きをしてバックアップを取ることができました。
しかし、タスクスケジューラーで動かすと、バックアップが取れないのです。
ココが不思議!?
履歴をみるとエラー無く実行されているという謎です!
ミラーリングさせてバックアップ
C:¥Backupのファイルを、外部のレンタルサーバーへコピーしてバックアップしていましたが、挙動がおかしいので、ミラーリングに変更しました。
バッチファイル(mirror.bat)
rem 日付の取得 set TODAY=%date:~-10,4%%date:~-5,2%%date:~-2,2% rem 開始時刻を記録する echo start > mirror.log date /t >> mirror.log time /t >> mirror.log echo ■□■ FTP実行中 ■□■ "C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script="c:\tools\mirror.txt" echo end >> mirror.log date /t >> mirror.log time /t >> mirror.log
スクリプトファイル(mirror.txt)
option batch on option confirm off open WinSCP接続名 synchronize remote -delete exit
※WinSCPには、FTPでの接続設定をしておき、「WinSCP接続名」の場所に入力することでコマンドラインから接続させることが可能になる。
手動でバッチファイルを実行させましたが、C:¥Backupのファイル(フォルダも含む)が、外部のレンタルサーバーに完全一致しました。
ココがポイント
ポイントは、synchronize remote -delete ですね
このバッチファイルを同期させたい時間帯にタスクスケジュールしたところ問題なく外部のレンタルサーバーにバックアップが取れるようになりました。
synchronize の使い方
使い方
リモートディレクトリ側を更新する場合
synchronize remote <ローカルディレクトリ> <リモートディレクトリ>
ローカルディレクトリ側を更新する場合
synchronize local <ローカルディレクトリ> <リモートディレクトリ>
今回は、外部のレンタルサーバー側にミラーリングさせてフォルダを同期しましたので、
synchronize remote -delete
となった訳ですが、-deleteオプションを付けない場合は、リモート先(外部のレンタルサーバー側)には、元フォルダからファイルを消しても消されずに蓄積していくようです。
他のオプションは、下記参考
オプション | 説明 |
-delete | 同期元にないファイルを同期先から削除します。「both」モードでは無視されます |
-mirror | ミラーモード(古いファイルについても同期される)で実行します。「both」モードでは無視されます。 |
-criteria=<基準> | 同期のための比較基準を指定します。「time」「size」「either」(以前のバージョンでは「both」でした。「both」モードは無視されます)「none」が選択できます。 |
-permissions=<モード> | ファイル保存時のパーミッションを指定します |
-nopermissions | デフォルトのパーミッションでファイルを保存します |
-speed=<kibps> | 転送速度を制限します |