3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WinSCPを使用してLinuxサーバーとWindowsPC間でバッチで自動的にファイルをやり取りする

Last updated at Posted at 2019-07-22

はじめに

 LinuxサーバーからWindowsPC、
またはWindowsPCからLinuxサーバーにファイルを毎日自動的にアップロード、
ダウンロードできたらいいなと誰しも一度は考えたことがあると思います。
そんな夢をバッチファイルとWindowsのタスクスケジューラで簡単に叶えることができます。

そう、WinSCPならね。

使用ツール

・WinSCP
・テキストエディタ
・タスク スケジューラー

手順

  1. バッチファイルを作る
  2. WinSCPのコマンドモードでの処理を記述したファイルを作る
  3. タスクスケジューラーに登録する

1. バッチファイルを作る

シンプルに、Linuxサーバー上にあるファイルをダウンロードするバッチファイルを作ります。
バッチファイルの名前は何でもいいですが、ここではgetFile.batにします。
テキストエディタを開いて以下のように記述しましょう。

getFile.bat
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /script="C:\batch\getFileByWinSCP.txt"
cd C:\batch\file

バッチファイルの中身解説

"C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /script="C:\batch\getFileByWinSCP.txt"

WinSCPをコマンドモードで起動して、C:\batch\getFileByWinSCP.txt(後述)に書いてある処理を呼び出しています。Pathはデフォルトでこれだと思いますが、各自環境に合わせて変更してください。

cd C:\batch\file

バッチのカレントディレクトリをC:\batch\fileに移動しています。ダウンロードしたファイルがこのパスに配置されます。

2. WinSCPのコマンドモードでの処理を記述したファイルを作る

上記で作成したバッチファイルから呼び出すための、WinSCPのコマンドモードでの処理を記述したファイルを作ります。
ファイル名もこれまた何でもいいのですが、ここではgetFileByWinSCP.txtにしましょう。なんと拡張子も何でもいいです。
テキストエディタを開いて以下のように記述しましょう。

getFileByWinSCP.txt
option batch on
open sftp://username:password@123.456.789.012:22
cd /backup
lcd "C:\batch\file"
get file.txt
exit

WinSCPのコマンドモードでの処理解説

option batch on

バッチモードで実行するので、~しますか?のような確認をしないようにします。

open sftp://username:password@123.456.789.012:22

SFTPのログイン。username:passwordは文字通りユーザー名とパスワード。
123.456.789.012:22は各自環境に合わせてIPアドレスとポート番号を入力してください。

cd /backup

サーバー側のカレントディレクトリを、ダウンロードしたいファイルのある所に移動しています。
環境に合わせて変えてください。

lcd "C:\batch\file"

ローカル側のカレントディレクトリを、ダウンロードしたいファイルを置く場所へ移動します。

get file.txt

file.txtというファイルをダウンロードします。ファイル名は各自変更してください。

exit

WinSCPを終了します。

3. タスクスケジューラーに登録する

Windowsのタスクスケジューラーを起動して、作成したバッチファイルをお好きな時間に実行するよう登録しましょう。

所感

これすごく便利だなーと思ったのが、サーバー側の処理とWindows側の処理が、一つのバッチファイルで完結するところですね。
コマンドモードでSFTPのログインしてしまえば↓みたいにmysqlの処理とかも呼べるので、
定時でサーバーに乗ってるMySqlのDBからCSVにデータを出力して、そのCSVをダウンロードするとかもできます。

call mysql -u username --password=password -e "`cat mysql_SQL.sql`" -s -N > sqlResult.csv

すごい。可能性しか感じない。

参考

毎日、SFTPで自動的にWINDOWSPCにファイルをダウンロードする
winSCPのコマンドリファレンス

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?