共用サーバー上の重要データや Web 公開フォルダを、ローカル PC 側へ定期的にバックアップしたり、ローカルの更新をサーバー側へ差分同期(ミラーリング)したりする方法を詳解します。WinSCP のスクリプト機能と Windows タスクスケジューラを組み合わせることで、「手動不要」「差分のみ高速転送」「深夜自動実行」を実現します。
1. 概要
- ミラーリング (
synchronize
) コマンドで、差分のみを効率的に転送 - WinSCP.com のバッチモードと タスクスケジューラ による定期実行
- 双方向同期(サーバー→ローカル/ローカル→サーバー)が可能
2. 利用メリット
- 手動バックアップの手間をゼロに
- 大量ファイルでも「新旧差分のみ」転送して高速化
- 深夜や早朝など任意の時間帯に自動実行し、業務時間帯の負荷を軽減
3. 前提条件
- WinSCP がインストール済み
C:\Program Files (x86)\WinSCP\WinSCP.com
が利用可能
- SFTP/FTP 接続情報(ホスト名、ユーザー名、パスワード or SSH 鍵)
- タスクスケジューラ を管理者権限で使える Windows 環境
4. スクリプト構成
text
option batch on
option confirm off
# ↓ 接続設定
open sftp://USER:PASSWORD@example.com/ -hostkey="ssh-rsa 2048 xx:xx:xx:..."
# ↓ ローカル/リモート作業ディレクトリ
lcd "C:\Backup\Site"
cd "/home/user/public_html"
# ↓ ミラーリング:差分同期
synchronize local # サーバー → ローカル
# synchronize remote # ローカル → サーバー
# ↓ 終了処理
close
exit
option batch on
/option confirm off
:対話を抑制open
:認証情報+ホストキー固定lcd
/cd
:バックアップ元/先のディレクトリsynchronize
:双方向切り替え可能
5. サンプルスクリプト解説
5.1 サーバー → ローカル(バックアップ)
ファイルサーバー上の最新データをローカルへ取り込みたい場合:
text
# backup_mirror.txt
option batch on
option confirm off
open sftp://backupuser:backuppass@example.com/ -hostkey="ssh-rsa 2048 xx:xx..."
lcd "C:\Backup\Site" # ローカル保存先
cd "/home/backup/site" # サーバー側元ディレクトリ
synchronize local # リモート→ローカル
close
exit
- 初回実行 で全ファイルを取得。
- 2回目以降 は更新分のみ転送。
5.2 ローカル → サーバー(デプロイ)
ローカルの開発成果をサーバーへ差分反映したい場合:
text
# deploy_mirror.txt
option batch on
option confirm off
open sftp://deployuser:deploypass@example.com/ -hostkey="ssh-rsa 2048 xx:xx..."
lcd "C:\Projects\Site" # ローカル作業フォルダ
cd "/home/user/public_html" # サーバー側公開フォルダ
synchronize remote # ローカル→リモート
close
exit
6. タスクスケジューラ登録手順
- タスクスケジューラを起動(
Win + R
→taskschd.msc
) - 左ペインで 「タスク スケジューラ ライブラリ」 を右クリック → 「基本タスクの作成」
- 名前 を入力(例:「サイトバックアップ」)/説明(任意)
- トリガー:毎日 2:00 AM/毎週月曜 3:00 AM などを設定
- 操作:
- プログラム/スクリプト:
"C:\Program Files (x86)\WinSCP\WinSCP.com"
- 引数の追加:
/script="C:\scripts\backup_mirror.txt" /log="C:\scripts\backup_mirror.log"
- プログラム/スクリプト:
- 実行ユーザー:適切な Windows ユーザーを指定し、最上位の特権で実行にチェック
- 完了 → 「タスクの実行」 で動作確認
7. 実行時のトラブルシュート
- 認証エラー
/script
に保存したスクリプト内のユーザー名/パスワード誤りチェック
- ホストキー警告
-hostkey
の指紋を間違えると接続拒否。接続時の指紋をコピペ
- パス不整合
lcd
/cd
のパスが実在するか 要確認
- ログに何も出ない
/log
ファイルを開き、文字化けや改行コードが正しいかチェック
8. セキュリティ強化
- SSH 鍵認証 を利用し、
open
コマンドに-privatekey="C:\keys\id_rsa.ppk"
を追加 - スクリプトファイルを Windows のアクセス制御 (ACL) で 自分だけ読み書き可能 に設定
- パスワード情報の平文保存を回避:環境変数読み込み型のバッチファイルから呼び出す方法もあり
9. まとめ
- WinSCP スクリプト + タスクスケジューラ で「週次/日次バックアップ」「更新デプロイ」を完全自動化
- 差分同期 により帯域・作業時間を最小化
- セキュリティ面では 鍵認証・ホストキー固定 を併用し、ログ取得で異常検知を行う
▶ 次は ログの自動ダウンロード&保存 ページで、ログ収集の自動化手順を詳しくご覧ください。