ログの自動ダウンロード&保存

思考時間: 2 ~ 3 秒

サーバー上のアクセスログやエラーログを、自動でローカルに取得し日付ごとに保存する方法を詳解します。WinSCP スクリプトから動的にファイル名を付与し、Windows タスクスケジューラでスケジュール実行するフローをご紹介します。


  1. 概要とメリット
  2. 前提条件
  3. スクリプト構成のポイント
  4. サンプルスクリプト:日次ログ取得
  5. タスクスケジューラ登録手順
  6. トラブルシュート
  7. セキュリティ上の注意
  8. まとめ

1. 概要とメリット

  1. 目的:サーバー上のログ(例:access.logerror.log)を毎朝自動でダウンロードし、
    ローカルに YYYYMMDD の日付付きファイル名で保存。
  2. メリット
    • 手動コピペ不要で取りこぼしゼロ
    • 日付ごとに整理され、トラブル解析やアクセス傾向分析が容易
    • バックグラウンド実行で運用負荷を軽減

2. 前提条件

  1. WinSCP がインストール済み
  2. SFTP/FTP 接続情報(ホスト名/ユーザー/パスワードまたはキー)
  3. ログ保存用フォルダをローカルに作成
    • 例: C:\ServerLogs\Access
  4. Windows タスクスケジューラ でスクリプト実行可能なユーザー権限

3. スクリプト構成のポイント

  • 変数の外部化:バッチファイルで「今日の日付」を環境変数に設定
  • WinSCP スクリプトget コマンドでファイル取得
  • リネーム:ローカル側でダウンロード後にファイル名を変更
  • ログ:実行ログを残し、エラー時に把握

4. サンプルスクリプト:日次ログ取得

(1) バッチファイル (download_log.bat)

@echo off
REM 今日の日付を YYYYMMDD 形式で取得
for /f "tokens=2-4 delims=/- " %%a in ('date /t') do set LOGDATE=%%c%%a%%b

REM WinSCP スクリプト呼び出し
set WINSCP="C:\Program Files (x86)\WinSCP\WinSCP.com"
set SCRIPTFILE="C:\scripts\getlog.txt"
set LOGDIR="C:\ServerLogs\Access"
set REMOTELOG="/var/log/access.log"

%WINSCP% /script=%SCRIPTFILE% /log="C:\scripts\getlog_%LOGDATE%.log"

REM ダウンロード後にファイル名を日付付きにリネーム
move "%LOGDIR%\access.log" "%LOGDIR%\access_%LOGDATE%.log"

(2) WinSCP スクリプト (getlog.txt)

option batch on
option confirm off

open sftp://user:pass@example.com/ -hostkey="ssh-rsa 2048 xx:xx:xx:xx"
lcd "C:\ServerLogs\Access"
get "/var/log/access.log"
close
exit
  • ポイント
    1. バッチ側で日付変数 LOGDATE を生成
    2. WinSCP は常に同名(access.log)として取得し、後処理でリネーム
    3. /log オプションで詳細ログを残す

5. タスクスケジューラ登録手順

  1. taskschd.msc でタスクスケジューラを開く
  2. 基本タスクの作成 → 名前例:「日次アクセスログ取得」
  3. トリガー:毎朝 6:00 AM(必要に応じて調整)
  4. 操作
    • プログラム/スクリプト: C:\scripts\download_log.bat
  5. 実行ユーザー:適切な権限のユーザーを選び、「最上位の特権で実行」にチェック
  6. 完了 → 一度「実行」をテスト

6. トラブルシュート

  1. ファイルが取得できない
    • スクリプト中のパスや open の接続情報を再確認
  2. 日付変数が空
    • for /f の日付取得フォーマットが Windows 言語設定に依存するため、powerShell -Command "(Get-Date).ToString('yyyyMMdd')" を利用する方法も
  3. ログファイル名衝突
    • 既存の同日ファイルがあれば上書きされる。意図しない上書きを防ぐにはリネーム前に存在チェックを追加

7. セキュリティ上の注意

  1. パスワード平文保存の回避
    • SSH 鍵認証を設定し、WinSCP スクリプトで -privatekey を利用
  2. スクリプトのアクセス制御
    • C:\scripts フォルダは実行ユーザーのみ読み書き可にする
  3. ログの管理
    • 転送ログに機密情報(パスワード)が出力されないよう /loglevel=0 等で制御

8. まとめ

  • 日次ログ取得 を自動化することで、運用時の証跡やアクセス解析用データが確実に手元に蓄積される
  • バッチ + WinSCP スクリプト + タスクスケジューラ の組み合わせが汎用的で設定も容易
  • 日付取得方法やファイル保存先の命名規則、パスワード管理に注意し、安全かつ継続的 に運用しましょう

▶️ 次は バッチファイル・PowerShell入門 のページで Windows スクリプトの基本を学び、運用自動化をさらに広げていきましょう。

上部へスクロール