FTPを介したファイルのテーリング


11

Windowsデスクトップからリモートサーバー上の大きなログファイルにアクセスしようとしています。私は唯一このリモートマシンではなく、SSHアクセスへのFTPアクセスを持っています。

現時点では、WinSCPを使用して、FTP経由でファイル全体をプルダウンしています。つまり、毎回ファイル全体を転送する必要があります。ただし、ログファイルの場合、最後の数行だけが必要になる可能性があります。

帯域幅が非常に制限されているため、これは特にイライラします。そのため、ファイル全体の転送には数分かかります。

シェルにアクセスできる場合、これはtail -100、最後の100行を取得するなどの方法を使用して簡単に実現できます。

FTP経由でこれを実行するソリューションを見つけたいです。連続したテールである必要はなく、1回限りで十分であることに注意してください。

回答:


8

あなたがしたいことは、間違いなくFTPでできます。技術的には、中断されたファイルのダウンロードを再開するときにFTPクライアントが行うことと同じです。

ユーザーの観点からは、FTPクライアントが指定された数の後続バイトのみの明示的なダウンロードをサポートしているかどうかはわかりません。

ただし、一部のFTPクライアントでは、以前にダウンロードしたファイルの新しい後続コンテンツを確実にダウンロードできます。

特にWinSCPでは、ログファイルのダウンロードを開始するだけです。次に、上書き確認プロンプトで、[ 再開 ]を選択します([ いいえ ]ボタンのドロップダウンメニューにあります)。このオプションは、ソースファイルが宛先ファイルよりも大きい場合にのみ使用できることに注意してください。

ログの最後の数行だけをダウンロードしたい場合は、ダウンロードを開始する前に、ログファイルより少し小さいサイズのダミーのローカルファイルを作成して、WinSCPをごまかすことができます。

上記のトリックを簡単に自動化することもできます。

fsutil file createnew mylog.log 100000000
winscp.com /command "open mysession" "get -resume /path_to_log/mylog.log" "exit"

の代替手段については、Windowsシステムで大きなファイルfsutilすばやく作成するをご覧ください

もっと手間をかけると、最初にログファイルサイズを確認し、ログサイズよりも数キロバイト小さいダミーファイルサイズを自動的に計算するようにスクリプトを変更できます。


0

WinSCPを使用してこれを行う方法がわかりません。実際、それは不可能かもしれませんが、一般的には、RESTコマンドを使用できるはずです。RFC 3659を参照してください。ただし、ファイルの後半からダウンロードを開始できるかどうか、または既にマーカーを受け取っている必要があるかどうかはわかりません。RFC 3659は、少なくともSTREAMモードではこれが可能であることを示していますが、

データ自体に加えてリスタートマーカーが転送されていない場合でも、FILE STRUctureを使用したSTREAMモードの転送を再開できます。これは、必要に応じてSIZEコマンドをRESTART(REST)コマンドと標準のファイル転送コマンドの1つと組み合わせて使用​​することにより行われます。


0

あなたのニーズをサポートするソフトウェアについて聞いたことがありません。しかし、プログラマーである場合は、Perlでこれを記述する方法を理解する必要があります。

ここで、すべてのファイルを取得する方法の例を見つけました。これはあなたの決意ではありませんが、実行方法を理解するのに役立ちます:http : //www.perlmonks.org/?node_id=907019

別のライブラリNet :: FTPのヘルプ:http : //search.cpan.org/dist/libnet/Net/FTP.pm

これを使用して、サーバーへのftp接続を開くことができます(最初の例)承認を行います(最初の例)

2番目のURLは、メソッドを使用してファイルの最後の部分を取得する方法を支援します。ファイルのどこから読み取りを開始するか-> read(BUFFER、SIZE [、TIMEOUT])小さいサイズの部分をBUFFER変数に直接読み込むcoursor

別の関数:length(BUFFER)は、取得するデータ量を示します。ゼロの場合は、おそらくEOF印刷( "$ BUFFER \ n")の単純な印刷バッファーコンテンツに画面に到達しています。

これは完全な解決策ではなく、方法です。これをすべて書いた理由の1つだけが、おそらくあなたのタスクに対応するソフトウェアがないことです。

そのプログラムの書き方がわからない場合は、スーパーユーザーではなくstackoverflow.comで尋ねてください。多くのプログラマーが支援の準備ができています。

可能であれば、ftpサイトがダウンロードの再開をサポートしていることを確認してください。ファイルのこの読み取り終了部分がないと不可能です。

別の部分的な解決策は、ログファイルのローテーション、1日1時間または1時間のファイルです。これは、ログファイルの成長速度に依存します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.