パソコン情報

FFFTPをバッチファイルで自動ミラーリングしていたら突然フリーズするようになったので別(WinSCP)の方法を模索

パソコン内のフォルダを別のサーバーにFFFTPを使って自動でアップロードする処理をバッチファイルを使ってやっていました。

今までは何の問題も無かったのに、

 

ココがダメ

突然ファイル転送も出来ずに、FFFTPもフリーズ




したまま動きません。

仕方なく終了させようとすると、「ファイル転送中です。」となり応答なしになります。

 

FFFTPの64ビットや32ビットを再インストール


結論的には、何やっても同じ状態でフリーズします!

しかし、

不思議ポイント

手動で作業をすると何の問題も無く転送はできます。



バッチファイルでの作業ができなくなっているようです。

パソコン自体もWindowsServerなので通常のパソコンとは違うので何かあるのかとも思いましたが、管理者モードで動かしても結果的には同じでした。

このままFFFTPで遊ばれていても時間が掛かるだけなので、別の方法を探してみました。








Windows標準のFTPクライアントは使えない

過去にも全く同じことで無駄な時間をかけてしまった記憶がある。

今回も、Windows標準のFTPクライアントを使ってバッチファイルを作成して実行すると何事も無く終了した。

しかし、

ココに注意

ファイルは転送されているように見えて、容量がゼロ

なのです。

最終的には、転送ができないようです。

たぶん、Windowsは、パッシブモードが使えないので転送ができないと思うのです。

 

ココがダメ

Windows標準のFTPでバッチ処理転送はできない

と考えた方が良さそうです。

 

WinSCPで自動転送に成功

過去にWinSCPを使って自動転送しようと考えて断念したことがあります。

https://pctips.jp/server/windows-ffftp-winscp-upload201909/

 

それは、自動で処理をさせたいのに、パスフレーズを聞かれるという状況が発生してメンドクサクなって断念しました。

 

今回は、その問題も無く成功したので備忘録にしておきます。

 

GUIにて接続設定を済ませておくと便利


スクリプトなどで設定する方法もあるようですが、Windowsマシンの特権を使ってGUIからFTP設定をするのが簡単です。

ここでポイントは、

転送プロトコルをSFTPじゃなく、FTPにする

ことで前回断念したような事が無くなると思います。

 

設定し終わったら、実際に手動で接続できるかどうかを確認しておくといいですね。

 

バッチファイルを作成

空のupftp.txtというのを同じフォルダ内に設置しておきます。

そのファイルに、FTP情報を書き込んでスクリプトにしています。

次に、upload.batというバッチファイルを作成します。

 

 

rem 日付の取得
set TODAY=%date:~-10,4%%date:~-5,2%%date:~-2,2%

rem 開始時刻を記録する
echo start > log.txt
date /t >> log.txt
time /t >> log.txt

echo option batch on> upftp.txt
echo option confirm off>> upftp.txt
echo open 【GUIで設定した接続】>> upftp.txt
rem echo cd c:\backup>> upftp.txt
echo option transfer binary>> upftp.txt
echo put  %TODAY%_DATABASE.bak>> upftp.txt
echo exit>> upftp.txt

echo ■□■ FTP実行中 ■□■

"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script="c:\tools\upftp.txt"

echo end >> log.txt
date /t >> log.txt
time /t >> log.txt



ちなみに、バッチファイルは、「当日の日付_DATABASE.bak」というファイルをアップロードしています。

また、log.txtにてアップロード転送したときの時間をログにしてあります。(必要ないかもしれませんけどね。)

 

 

タスクスケジューラに登録して定期実行


自動で転送させるには、Windowsの機能である「タスクスケジューラ」を使って先ほどのバッチファイルを動かすように設定すれば自動転送やバックアップが可能ですね。