パソコン内のフォルダを別のサーバーにFFFTPを使って自動でアップロードする処理をバッチファイルを使ってやっていました。
今までは何の問題も無かったのに、
ココがダメ
突然ファイル転送も出来ずに、FFFTPもフリーズ
したまま動きません。
仕方なく終了させようとすると、「ファイル転送中です。」となり応答なしになります。
FFFTPの64ビットや32ビットを再インストール
結論的には、何やっても同じ状態でフリーズします!
しかし、
不思議ポイント
手動で作業をすると何の問題も無く転送はできます。
バッチファイルでの作業ができなくなっているようです。
パソコン自体もWindowsServerなので通常のパソコンとは違うので何かあるのかとも思いましたが、管理者モードで動かしても結果的には同じでした。
このままFFFTPで遊ばれていても時間が掛かるだけなので、別の方法を探してみました。
Windows標準のFTPクライアントは使えない
過去にも全く同じことで無駄な時間をかけてしまった記憶がある。
今回も、Windows標準のFTPクライアントを使ってバッチファイルを作成して実行すると何事も無く終了した。
しかし、
ココに注意
ファイルは転送されているように見えて、容量がゼロ
なのです。
最終的には、転送ができないようです。
たぶん、Windowsは、パッシブモードが使えないので転送ができないと思うのです。
ココがダメ
Windows標準のFTPでバッチ処理転送はできない
と考えた方が良さそうです。
WinSCPで自動転送に成功
過去にWinSCPを使って自動転送しようと考えて断念したことがあります。
Windows環境でFFFTPやWinSCPでバッチファイルを使ったファイル自動アップロード
それは、自動で処理をさせたいのに、パスフレーズを聞かれるという状況が発生してメンドクサクなって断念しました。
今回は、その問題も無く成功したので備忘録にしておきます。
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の機能である「タスクスケジューラ」を使って先ほどのバッチファイルを動かすように設定すれば自動転送やバックアップが可能ですね。