WinSCPコマンドでのAWS S3へのファイル同期

ソフトウェア

WindowsでWinSCPコマンドを用いてAWS S3にファイルを同期することにしました。

ファイル転送処理用にWindows PCを1台用意し、WinSCPで手動でAWS S3にフルバックアップを取っていたのですが、流石に同期を毎回手動実行することは容量的に厳しいためWinSCPのコマンドを用いて自動化することにしました。

手動でも簡単にできますが、一々作業に気を張るのはやはり賢くないため、自動化することにしました。

WinSCPコマンドを用いた同期処理を作成する

下記のローカル環境からリモート環境にミラーリングする処理を記載したファイルを作ります。

ファイル名は任意でここではsynchronize.txtとしておきます。

# エラー時に処理終了
option batch abort
# 確認をされなくする
option confirm off

# S3に接続
open S3://[アクセスキーID]:[シークレットキー]@ap-northeast-1

# ローカルからリモートに同期
synchronize remote [ローカルディレクトリ] [リモートディレクトリ] -delete -criteria=either

#切断
close 1

上記を作成したらWinSCP.comと同じフォルダに配置します。

実行バッチを作成する

同期処理のプログラムを実行する処理を作成します。

ファイル名はbackup.batとします。

# WinSCPで同期処理のプログラムを実行
cd “C:¥program files (x86)¥WinSCP”
WinSCP.com /script .¥synchronize.txt /logs .¥logs¥synchronize_log.txt

# 終了
exit

上記を作成したらWinSCP.comと同じパスに配置します。

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

タスクスケジューラに実行バッチをスケジュール登録します。

タスクスケジューラを起動

タスクスケジューラライブラリを右クリック

タスクの作成をクリック

名前を任意で入力

ユーザーがログオンしているかどうかに関わらず実行する

トリガータブをクリック

新規をクリック

設定で任意のスケジュールを登録

OKをクリック

操作タブをクリック

新規をクリック

プログラムで下記を入力する

C:¥Program Files (x86)¥WinSCP¥baukup.bat

OKをクリック

以上で動作するはずです。

aws cliのsyncを利用したほうがいい

WinSCPのコマンドでできないかと思い進めましたが、AWS S3を使うのであればaws cliのsyncを利用したほうがいいです。

処理速度もWinSCPのコマンドより早いです。

まあ多少いじればS3以外にWindowsからバックアップ取る際に応用できるので勉強になりました。

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