定期バックアップやミラーリングの自動実行

共用サーバー上の重要データや Web 公開フォルダを、ローカル PC 側へ定期的にバックアップしたり、ローカルの更新をサーバー側へ差分同期(ミラーリング)したりする方法を詳解します。WinSCP のスクリプト機能と Windows タスクスケジューラを組み合わせることで、「手動不要」「差分のみ高速転送」「深夜自動実行」を実現します。

  1. 概要
  2. 利用メリット
  3. 前提条件
  4. スクリプト構成
  5. サンプルスクリプト解説の管理
  6. タスクスケジューラ登録手順
  7. 実行時のトラブルシュート
  8. セキュリティ強化
  9. まとめ

1. 概要

  • ミラーリング (synchronize) コマンドで、差分のみを効率的に転送
  • WinSCP.com のバッチモードと タスクスケジューラ による定期実行
  • 双方向同期(サーバー→ローカル/ローカル→サーバー)が可能

2. 利用メリット

  • 手動バックアップの手間をゼロに
  • 大量ファイルでも「新旧差分のみ」転送して高速化
  • 深夜や早朝など任意の時間帯に自動実行し、業務時間帯の負荷を軽減

3. 前提条件

  1. WinSCP がインストール済み
    • C:\Program Files (x86)\WinSCP\WinSCP.com が利用可能
  2. SFTP/FTP 接続情報(ホスト名、ユーザー名、パスワード or SSH 鍵)
  3. タスクスケジューラ を管理者権限で使える 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 onoption confirm off:対話を抑制
  • open:認証情報+ホストキー固定
  • lcdcd:バックアップ元/先のディレクトリ
  • 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. タスクスケジューラ登録手順

  1. タスクスケジューラを起動Win + Rtaskschd.msc
  2. 左ペインで 「タスク スケジューラ ライブラリ」 を右クリック → 「基本タスクの作成」
  3. 名前 を入力(例:「サイトバックアップ」)/説明(任意)
  4. トリガー:毎日 2:00 AM/毎週月曜 3:00 AM などを設定
  5. 操作
    • プログラム/スクリプト:
      "C:\Program Files (x86)\WinSCP\WinSCP.com"
    • 引数の追加:
      /script="C:\scripts\backup_mirror.txt" /log="C:\scripts\backup_mirror.log"
  6. 実行ユーザー:適切な Windows ユーザーを指定し、最上位の特権で実行にチェック
  7. 完了「タスクの実行」 で動作確認

7. 実行時のトラブルシュート

  1. 認証エラー
    • /script に保存したスクリプト内のユーザー名/パスワード誤りチェック
  2. ホストキー警告
    • -hostkey の指紋を間違えると接続拒否。接続時の指紋をコピペ
  3. パス不整合
    • lcd/cd のパスが実在するか 要確認
  4. ログに何も出ない
    • /log ファイルを開き、文字化けや改行コードが正しいかチェック

8. セキュリティ強化

  • SSH 鍵認証 を利用し、open コマンドに -privatekey="C:\keys\id_rsa.ppk" を追加
  • スクリプトファイルを Windows のアクセス制御 (ACL) で 自分だけ読み書き可能 に設定
  • パスワード情報の平文保存を回避:環境変数読み込み型のバッチファイルから呼び出す方法もあり

9. まとめ

  • WinSCP スクリプト + タスクスケジューラ で「週次/日次バックアップ」「更新デプロイ」を完全自動化
  • 差分同期 により帯域・作業時間を最小化
  • セキュリティ面では 鍵認証ホストキー固定 を併用し、ログ取得で異常検知を行う

▶ 次は ログの自動ダウンロード&保存 ページで、ログ収集の自動化手順を詳しくご覧ください。

上部へスクロール