Web サーバーから CSV ファイルを FTP 送信するバッチ ファイルがあります。最新の CSV ファイルのみをダウンロードする必要があります。
それ、どうやったら出来るの?
これは私がこれまでに持っているものです:
open 44.44.44.444
username
password
CD /Client/ABCCompany/
get *.csv
quit
close()
ありがとう。
Web サーバーから CSV ファイルを FTP 送信するバッチ ファイルがあります。最新の CSV ファイルのみをダウンロードする必要があります。
それ、どうやったら出来るの?
これは私がこれまでに持っているものです:
open 44.44.44.444
username
password
CD /Client/ABCCompany/
get *.csv
quit
close()
ありがとう。
開発環境にインストールするために、本番環境からバックアップ ファイルを繰り返しダウンロードする必要がありました。
私たちの場合、ダウンロードを自動化したいファイルのファイル名には、日付が指定されています。backup_2018_08_03_020003_1048387.bak
*2018_08_03*
そのため、コマンド ライン ftp セッションでmget を使用してファイルを取得できます。
バックアップ手順は毎朝 01:00 AM に実行されるため、毎日取得できるバックアップがあります。
もちろん、バックアップ ファイルのタイムスタンプに基づいて最新のバックアップ ファイルをフェッチするスクリプトがあれば、より適切で優れたものになります。これは、最新のバックアップに問題が発生した場合や、バックアップ ファイルの命名形式が変更された場合に備えてです。このスクリプトは、内部開発目的でバックアップを取得するための単なるスクリプトなので、壊れても大したことではありません。後でこれを調べて、よりクリーンなソリューションを作成できるかどうかを確認します。
通常の ftp コマンド プロンプト スクリプトを使用して、今日のバックアップ ファイルを要求するだけのバッチ スクリプトを作成しました。
今日の日付の書式を正しく設定することが重要です。ファイル名の日付の形式と正しく一致する必要があります。
スクリプトを使用する場合は、変数を独自の情報に置き換える必要があります。また、実行元のディレクトリへの書き込みアクセスも必要です。
これは私が作成したスクリプトです:
@Echo Off
Set _FTPServerName=xxx.xxx.xx.xxx
Set _UserName=Username
Set _Password=Password
Set _LocalFolder=C:\Temp
Set _RemoteFolder="/path/"
Set _Filename=*%date:~-4,4%_%date:~-7,2%_%date:~-10,2%*
Set _ScriptFile=ftptempscript
:: Create script
>"%_ScriptFile%" Echo open %_FTPServerName%
>>"%_ScriptFile%" Echo %_UserName%
>>"%_ScriptFile%" Echo %_Password%
>>"%_ScriptFile%" Echo lcd %_LocalFolder%
>>"%_ScriptFile%" Echo cd %_RemoteFolder%
>>"%_ScriptFile%" Echo binary
>>"%_ScriptFile%" Echo mget -i %_Filename%
>>"%_ScriptFile%" Echo quit
:: Run script
ftp -s:"%_ScriptFile%"
del "%_ScriptFile%"
転送を 2 つの部分で行う必要がある可能性が非常に高くなります。最新のファイルを最後に与える必要があるDIRコマンドを最初に発行します。DIR 出力から最後のファイル名を解析すると、そのファイル名が後続の GET に使用されます。
私はC#で似たようなことをしています。