Controleer het laatste FTP-antwoord voordat je een upload vertrouwt
Een 150-antwoord betekent dat de overdracht begon, niet dat het bestand is opgeslagen. Scheid lokaal lezen, opslagmachtiging, de dataconnectie en het laatste antwoord.
Een FTP-client kan een put-commando accepteren lang voordat de server het bestand heeft ontvangen, en de kloof tussen die twee gebeurtenissen is waar de meeste upload-mysteries leven. Vier fasen moeten worden voltooid: het lokale bestand wordt gelezen, de server accepteert het opslagverzoek, de dataconnectie draagt de bytes, en de overdracht bereikt een laatste positief antwoord. De fasen vergelijken is nuttiger dan clients vergelijken, want een login die werkt en een bestandsnaam die verschijnt stoppen beide voor de finish.
Voorlopig antwoord versus laatste antwoord
Voor STOR is een 125- of 150-antwoord voorlopig. Het zegt dat de server bereid is het te proberen en dat er een dataconnectie opengaat, niet dat het object in zijn definitieve vorm bestaat. De bewerking is pas voltooid wanneer de overdracht een positief voltooiingsantwoord bereikt, meestal 226 of 250, in de context van die bewerking.
Een 426 betekent dat de overdracht is afgebroken, en een nummer dat een ander commando afdrukt is niet het resultaat van deze upload. Lees het antwoord dat bij de STOR hoort, niet het laatste nummer op het scherm. Als de client afsluit voordat dat antwoord arriveert, heb je helemaal geen bewijs van voltooiing.
Controleverbinding versus dataconnectie
Authenticatie en mapweergave gebruiken de controleverbinding. De bytes gebruiken een aparte dataconnectie, en het eindpunt daarvan wordt per overdracht onderhandeld. Een geslaagde login bewijst het controlepad en zegt niets over de vraag of het data-adres vanaf de client bereikbaar is.
Wanneer de server de dataconnectie niet kan openen, onderzoek het onderhandelde eindpunt en het toegestane pad. Passieve modus vereist nog steeds een bruikbaar data-adres en poort, en een firewall of NAT-apparaat tussen client en server kan de controlesessie doorlaten terwijl het databereik wordt geblokkeerd. Wanneer de server in plaats daarvan het opslagverzoek weigert, kijk dan naar de externe padnaam, de machtigingen of de opslaglimieten. Geen van beide takken wordt verklaard door het feit dat de controleverbinding is geauthenticeerd.
FTP over TLS versus SFTP
FTP over TLS is nog steeds FTP: twee verbindingen, FTP-antwoorden en een TLS-upgrade op elk daarvan. SFTP is een SSH-subsysteem met een enkele verbinding en een volledig andere commandoset. Ze delen een doel en bijna niets anders, dus een diagnose die tussen beide schakelt begint meestal met het vergelijken van de verkeerde logs.
Schakel TLS niet uit zodat een tussenliggende helper de sessie kan inspecteren, en behandel een SFTP-fout niet als een FTP-antwoordprobleem. de curl-handleiding documenteert expliciete TLS, passieve modus en uploadopties als je een gescripte test nodig hebt, en het is de referentie voor wat elke vlag werkelijk verandert.
Kies het protocol dat de dienst feitelijk biedt voordat je het debugt. Een server die alleen SFTP spreekt zal nooit een 226-antwoord produceren, hoe de client ook is geconfigureerd.
Een zichtbare bestandsnaam versus een opgeslagen object
Een zichtbare bestandsnaam kan een onvolledig object vertegenwoordigen, vooral na een afgebroken overdracht of een client die vroegtijdig afsloot. Vraag de eigenaar van de dienst de grootte van het bedoelde testbestand en een betrouwbare inhoudshash te vergelijken met het opgeslagen object wanneer bytebehoud wordt verwacht.
Binaire en ASCII-modus zijn een andere vergelijking die het resultaat verandert. ASCII-modus kan regeleinden vertalen, dus de opgeslagen bytes verschillen van het lokale bestand ook al is de overdracht geslaagd. Houd binaire modus aan voor een byte-voor-byte-controle, en voeg geen conversieopties toe om een mislukte overdracht er anders uit te laten zien.
Een gewone STOR kan een bestaand bestand vervangen, en toestemming om in te loggen of een map te tonen geeft geen toestemming om er een object in te maken of te vervangen. Gebruik een eerder ongebruikte externe naam voor de test.
Wat je moet vergelijken voordat je het opnieuw probeert
Voeg niet blind toe, hervat niet en herhaal geen upload over een onzeker gedeeltelijk bestand. Spreek met de eigenaar af of je opnieuw begint onder een nieuwe naam, de door de dienst ondersteunde herstelprocedure gebruikt, of het mislukte testobject verwijdert.
Schrijf de uitkomst als een van vier uitspraken: het lokale lezen mislukte, de opslag werd geweigerd, de gegevensoverdracht werd afgebroken, of de overdracht voltooide en de opgeslagen bytes kwamen overeen. Dat verslag is een sterker resultaat dan de shell, de VPN en de FTP-instellingen samen te veranderen tot er een bestandsnaam verschijnt, en het vertelt de volgende persoon welke fase te onderzoeken. Bewaar de opgeschoonde antwoordtekst bij die uitspraak. Dan is een nieuwe poging een beslissing, geen reflex.