GNU/Linux >> Znalost Linux >  >> Linux

LINUX:jak zjistit, že nahrávání ftp souboru je dokončeno

Zkusil bych použít inotify, kód události IN_CLOSE_WRITE.


Apache "Mina" ftp server (java) může být schopen dělat, co chcete, včetně detekce neúspěšného nahrávání, jak je uvedeno zde

Citace:

Z Ftplet.afterCommand byste měli být schopni se podívat na odpověď. Pro ty neúspěšné přenosy, které FtpServer dokáže detekovat (což způsobuje SocketException nebo IOException), by to mělo být něco jako 426 nebo 551.

Přehled Ftplet zde, včetně kódů odpovědí.

Podpis metody afterCommand:

FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply)

Zaškrtli byste reply.getCode() ve vaší přepsané metodě. Měli byste podtřídu DefaultFtplet místo implementace Ftplet rozhraní od začátku.

Všimněte si, že DefaultFtplet::afterCommand ukazuje, jak zjistit, na jaký příkaz klienta se odpovídá. Můžete zkontrolovat STOR nebo STOU a kód odpovědi 426 nebo 551 k detekci neúspěšných nahrávání.

To však nemusí detekovat nahrávání záměrně ukončené klientem, pokud se klientská aplikace rozhodne nakládat s přenosem, jako by byl soubor jen kratší, než je. V případě neúmyslného přerušení spojení si myslím, že bude fungovat kontrola kódu odpovědi. Testem může být zabití klientské aplikace nebo vypnutí síťového rozhraní klientského počítače.

Chcete-li zpracovat úspěšná nahrávání (vaše původní otázka), můžete místo toho hledat kód odpovědi pro úspěšnou odpověď, tj. 226 .


Linux
  1. Jak vytvořit odkládací soubor v Linuxu

  2. Jak vyprázdnit soubor protokolu v Linuxu

  3. Jak nahrát jeden soubor pomocí FTP z příkazového řádku?

  1. Jak spravovat možnosti souborů Linux

  2. Jak najít balíček, který poskytuje konkrétní soubor v Linuxu

  3. Jak zkopíruji soubor přes FTP pomocí Ubuntu Linux?

  1. Jak najít soubor v Linuxu

  2. Jak vytvořit swap v Linuxu

  3. Jak přejmenovat soubor v Linuxu?