documentation では、lftp
がFTPおよびSFTPプロトコルのキープアライブをサポートしているかどうかは明確ではありません。誰かが答えを知っていますか?
FTPの場合、キープアライブメカニズムがないため、ここで説明するように、ありません: https://unix.stackexchange.com/questions/101399/how-to-keep-ftp-connection-alive
ただし、ネットオプションを使用して、タイムアウトを手動で設定してみることができます。
net:idle(時間間隔)
このアイドル時間の後、サーバーから切断します。 >デフォルトは3分です。
そして
net:timeout(時間間隔)
ネットワークプロトコルのタイムアウトを設定します。
Sftpに関しては、SSHクライアントの設定によって異なります。たとえば、タイムアウトを調整し、/ etc/ssh_configでopensshのキープアライブオプションを通常どおり使用できます(ファイルの場所はディストリビューションによって異なります)。これはこの回答で最もよく説明されています https://unix.stackexchange.com/a/261905/10525 しかし、要するにあなたは必要です:
Host *
ServerAliveInterval XX
ServerAliveCountMax YY
問題の非常に良い説明は ProFTPD projrct から来ています:
(転送されるファイルが非常に大きいか、接続が遅いために)時間がかかるFTP転送で何が起こるかを考えてみましょう。制御接続用に1つのTCP接続があり、データ転送接続用の個別のTCP接続。すべてのバイトがデータ接続を介して転送されるため、データ接続は確実にアイドル状態ではありませんが、データ転送が行われている間、制御接続はアイドル状態です!そして、FTP接続がクライアントとサーバーの間のNATデバイスを通過していると仮定しましょう。
そのNATはあまり賢くないかもしれません;あなたのFTPセッションの2つの異なるTCP接続が互いに関連していることを知らないかもしれません;それは1つだけを見ますアイドルTCP接続、および1つのビジーTCP接続。そのFTP制御接続が長時間アイドル状態の場合、NAT =それを閉じる可能性があります(TCP実際にバイトを転送する必要がある接続に使用できる状態テーブルの貴重なスペースを維持するため))(一部のNATはTCP 5分間だけアイドル状態になっている接続。)FTPサーバーは、FTP制御接続が閉じられていることを確認し、データ転送を中止します。
FTPサーバーまたはFTPクライアントのいずれかが制御接続でTCPキープアライブを使用していた場合、NATはTCPキープアライブプローブであり、アイドル制御接続を閉じていません。
ProFTPD projrct は、サーバー自体からのTCPキープアライブをサポートする本格的なFTPサーバーです。
クライアント側からは、Filezillaなど、サーバーとのTCP接続)を維持するように構成できるクライアントがあります。
から nix Stack Exchange :
FTPプロトコル自体にはそのようなメカニズムが含まれていないため、ここでは絶対的な答えはありません。
ただし、「NOOP」、「LIST」、「CWD」などの特定の状況では、FTP接続を維持するために使用できる実際の意味を持たないFTPプロトコルコマンドがあります。
したがって、サーバー側のタイムアウトタイマーをリセットするために、これらの「意味のない」コマンドを使用してこのようなメカニズムを実装するのは、クライアント自身の責任です。もちろん、サーバー側の最大アイドル時間の値に一致させるために、これらのクライアント側のメカニズムを調整する必要がある場合もあります。
例を挙げると、よく知られている Filezilla は、このようなメカニズムを実装しています([編集]-> [設定]メニュー項目、[接続]-> [FTP]タブを参照)。
ftp:nop-interval 変数を設定してみてください:
ftp:nop-interval(秒)
ファイルの末尾をダウンロードするときのNOOPコマンド間の遅延。これは、データ転送をフラッシュする前に「転送完了」メッセージを送信するftpサーバーに役立ちます。このような場合、NOOPコマンドは接続タイムアウトを防ぐことができます。
set ftp:nop-interval 10;