SFTP接続をバッチ化して定時実行させる方法【WinSCP】

コンピュータ関連
この記事は約10分で読めます。

2025.4.1 

VPS上のLinuxサーバ上に保存しているイメージバックアップを、GoogleDriveへバックアップしていました。

先日気が付いたら、Linux上のGoogleDriveが使えてないことが発覚し、再インストールしてもダメな状況でした。

ちょっとイラっとして、次の方針でバックアップ計画を変更したので、その忘備録の記事になります。

「さくらVPS上のUbuntuサーバに対し、WindowsからSFTP接続してサーバ上のデータをWindows上にダウンロードする動作をバッチ化し、定時に実行させる。」

それを実現するために以下のポイントに分割して説明します。

①さくらVPS上のUbuntuサーバにWindowsからSFTP接続し、データをダウンロードする

②上記をバッチ化する

③バッチを定時に起動させる

Googleは頻繁にセキュリティ更新してくるので、無償ツールの認証が通らなかったり仕様が変わったりするんですよね。

だいぶ力業ですが、Googleに頼らない方針にすることで安定化は図れたかなと。

下記の事をやりたい人は参考になるかなと思います。

「Windows上で、さくらVPS上のUbuntuサーバにSFTP接続したい」

「WindowsからSFTP接続する仕組みをバッチ化したい」

「作成したバッチを定時実行させたい」

 

 

0.実行環境

■サーバ環境

・さくらVPSメモリ:2GB、CPU:3コア、SSD:200GB)

LinuxOS:Ubuntu20.04LTS

Apache:2.4

MySQL:8.0

PHP:7.4

■Windows環境

・OS:Windows11

 

1.SFTP接続環境構築

既に整備されている方はスキップしてください。

 

①サーバ上(接続先)

SFTP(SSH File Transfer Protocol)接続するにあたり、まずは接続先サーバ上にOpenSSHサーバの導入を行います。

が、Ubuntu20.04では最初からインストールされているようです。

一応導入済みかどうかの確認は以下のコマンドで確認できます。↓

sudo systemctl status ssh

もしインストールされていないなら、次のコマンドでインストールできます。↓

sudo apt install openssh-server

今回は細かな操作は行わないので、設定はデフォルトのまま使用します。

SSHサーバの起動は、次のコマンドで行います。↓

sudo systemctl start ssh

念のため、SSHのポート(22番)のファイアウォールも開けておきましょう。↓

sudo ufw allow 22

さらに念のため、さくらVPS上のパケットフィルター設定のポートも開けておきましょう。↓

これで外部からSFTP接続が可能となるはずです。

次に、ファイル操作を行うには、そのファイルが格納されているディレクトリに権限を与えなければなりません。

対象ディレクトリに権限が付与済みであれば、手順②へ飛ばしてください。

ディレクトリへの権限付与は以下のコマンドで操作可能です。↓

sudo chmod 777 [ディレクトリ名(絶対パス)]

接続元の設定は②へ続きます。

 

②Windows上(接続元)

WindowsにはSSH接続する機能が備わっているので、コマンドプロンプトから直接コマンドを打てば繋がりますし、TeraTarmを使うのもいいでしょう。

ただ、GUI操作の方が楽なので、今回はGUI操作でSFTP接続し、ファイル操作が可能なツールで説明していきます。

窓の社」から「WinSCP」の無料版をダウンロード&インストールします。

このツールはさくらインターネット公式にも出てくるツールなので、さくらのサービス利用者は持ってた方が楽、ですかね。

ダウンロードサイトはこちらから

基本的に何も考えずに「次へ」でインストールしていけばOK。

今回も細かな設定は行いません。

次に、一度接続テストを行い、接続時にできるキャッシュを残しておきます。↓

さくらVPSであれば、接続情報は次の通りになるはずです。

ホスト名:契約時のサーバ名(〇〇.vs.sakura.ne.jp、となるはず)

ユーザ名:SSHサーバがデフォルト設定であれば、Ubuntu

パスワード:サーバログイン時のパスワード

これで「ログイン」ボタンを押下すると接続が開始されます。

途中「秘密鍵が~」とか「セッションが~」とか確認画面が出た際は、全部「OK」にしておいてください。

接続が成功するとこのような画面が開きます。↓

ドラッグ&ドロップ操作もできるので、とても操作しやすくて好きです。

いままでの「SFTP接続~ファイル操作」までをバッチ化させる手順は、次項になります。

 

2.Windowsバッチ化

次の2つのファイルを作成します。

ダウンロード先のフォルダを先に作成し、その中に置いておくと良いでしょう。

必要に応じて、[]内の値は読み手の環境に合わせて変更してください。

①WinSCPのコマンド

ファイル名は「〇〇.txt」とします。

#サーバに接続
open sftp://[ユーザ名]:[パスワード]@[ホスト名]/

#サーバ上の共有フォルダに移動
cd [操作したいディレクトリの絶対パス]

#ローカルディレクトリにファイルを転送
get [ダウンロードしたいファイル名やディレクトリ名] [ダウンロード先ファイルの絶対パス(例→C:\Users\Lenovo\Desktop\dx\]

#接続完了
exit

※全角文字を使うと文字化けしてうまく接続できません

get」コマンドはダウンロードなので、アップロードしたい場合は「put」を使用するとアップロードも可能になります。

②コマンドプロンプトのコマンド

ファイル名は「〇〇.bat」とします。

@echo off

"[WinSCP.comの絶対パス(例→C:\Users\Lenovo\AppData\Local\Programs\WinSCP\WinSCP.com)]" /script=[①で作ったテキストファイルの絶対パス(例→C:\Users\Lenovo\Desktop\dx\sftp.txt)]

※全角文字を使うと文字化けしてうまく接続できません

WinSCP.com」ファイルの場所ですが、インストール環境によってまちまちです。

デスクトップ上にできた「WinSCP」のショートカットを右クリックし、「ファイルの場所を開く」とすると、表示されたフォルダの中にいるはずです。↓

ここまで来たら、後は作成した「〇〇.bat」をダブルクリックすれば動くはずです。

筆者はISOファイルのダウンロードを組みましたので、このような画面になります。↓

バッチがうまく動作することが確認できれば完了です。

定時に動かす設定は次の項番になります。

 

3.バッチを定時実行させる

これは単純に、Windowsの「タスクスケジューラ」機能を利用します。

Windowsの検索窓から上記のワードを打てば出てきます。↓

右ペインの「タスクの作成」を選択。↓

全般」タブ > タスク名に名前を付ける(他設定値は無視)。↓

トリガー」タブ > 「新規」ボタン押下。↓

個々の値を各々の仕様に合わせて変更 > 「OK」ボタン押下で反映。

※一番下、「有効」に☑が入っていないと起動しません。

操作」タブ > 「新規」ボタン押下。↓

参照」で先ほどの作成した「〇〇.bat」ファイルを選択 > 「OK」ボタン押下。

この状態で「OK」ボタン押下。↓

左ペイン「タスクスケジューラライブラリ」に作成したタスクが存在すれば完了です。↓

あとはバッチが指定通りに起動すれば完了!

お疲れさまでした。

 

4.最後に

正直、こんなことしなくても、さくらVPSのバックアップ課金をすれば解決する話なんですよね・・・

ただし、課金額がSSDの保存領域に比例して高くなるので、どうしても最小コストに抑えたい場合は何とか工夫しなければならないわけで。

GoogleDriveもその手の1つだったんですが、Googleのセキュリティ方針に振り回される。。。

仕方なしに強硬手段で対応した次第です。

これならPCがあまり詳しくなくとも、サーバとPCさえ動いていれば何とかなりますしね。

ちなみに、ツールの組み合わせは発想になりますが、中のコーディングは全部AI(Grok)が作ってくれました。

最近、実用的につかえるAIが無償で使えてとても便利な世の中になりましたね。

 

▼オススメ教本▼

コメント

タイトルとURLをコピーしました