WinSCPを使ってサーバ上のファイルを端末にバックアップするスクリプトを作成する方法

サーバ上に作成したバックアップファイルを、Windows端末上のOneDriveフォルダに持っていくバッチを作ろうと思い、その時の方法のメモ。

端末にWinSCPを入れていつも使っていたので、これを使ってバッチを組めないかと調べてみました。
するとWinSCPにはGUIではなくコンソール実行するモードが付いているようです。(詳細はここ

1.WinSCPをコンソールモードで実行するバッチファイルを作成する

まず、WinSCPをコンソールモードで実行するバッチファイルを作成します。winscp.exeに/consoleオプションを指定するとコンソール実行できます。また、/script=[スクリプトファイル名]を指定すると、そのスクリプトファイルに記載された一連の捜査を実行してくれます。

sample.bat

"C:\Program Files (x86)\WinSCP\winscp.exe" /console /script="sample.script"

2. スクリプトファイルを作成する

スクリプトファイルにサーバのファイルを端末に転送するスクリプトを書きます。(今回はsynchronizeというWinSCPの機能を使用、これはリモートとローカルのフォルダを同期するためのコマンドです)

sample.script

option batch on
open user:password@IP:port  ←ここに書いた接続先にSSH接続されます
cd /tmp/backup ←サーバ上のバックアップ対象ディレクトリ
lcd C:\tmp\backup ←端末上のバックアップ先ディレクトリ
synchronize local -delete ←リモート先ディレクトリをローカルディレクトリに同期するコマンド(ファイル削除あり)
exit ←終了

これでサーバ上のディレクトリを端末上のディレクトリに同期できます。(-deleteオプションを使うことで、サーバ上から消えたファイルは端末上からも削除)

サーバ上のバックアップファイルは世代管理していて、古いものはサーバ上でも消えるようにしていたため、端末上でも消すために同期させる機能を使いました。

端末上の同期先のフォルダをonedriveのフォルダにすれば、onedriveにバックアップファイルが保存されます。