Kontrollera det sista FTP-svaret innan du litar på en uppladdning
Ett 150-svar betyder att överföringen startade, inte att filen är lagrad. Separera lokal läsning, lagringsbehörighet, dataanslutningen och det sista svaret.
En FTP-klient kan acceptera ett put-kommando långt innan servern har tagit emot filen, och i gapet mellan dessa två händelser bor de flesta uppladdningsmysterier. Fyra steg måste slutföras: den lokala filen läses, servern accepterar lagringsbegäran, dataanslutningen bär byten och överföringen når ett slutligt positivt svar. Att jämföra stegen är mer användbart än att jämföra klienter, eftersom en inloggning som fungerar och ett filnamn som syns båda stannar före mållinjen.
Preliminärt svar kontra slutligt svar
För STOR är ett 125- eller 150-svar preliminärt. Det säger att servern är villig att försöka och att en dataanslutning öppnas, inte att objektet finns i sin slutliga form. Åtgärden är bara slutförd när överföringen når ett positivt slutförandesvar, vanligen 226 eller 250, i den åtgärdens sammanhang.
426 betyder att överföringen avbröts, och ett nummer som ett annat kommando skriver ut är inte den här uppladdningens resultat. Läs svaret som hör till STOR:en, inte det sista numret på skärmen. Om klienten avslutas innan det svaret kommer har du inget slutförandebevis alls.
Kontrollanslutning kontra dataanslutning
Autentisering och kataloglistning använder kontrollanslutningen. Byten använder en separat dataanslutning, och dess ändpunkt förhandlas per överföring. En lyckad inloggning bevisar kontrollvägen och säger ingenting om ifall dataadressen är nåbar från klienten.
När servern inte kan öppna dataanslutningen, undersök den förhandlade ändpunkten och den tillåtna sökvägen. Passivt läge kräver fortfarande en användbar dataadress och port, och en brandvägg eller NAT-enhet mellan klient och server kan släppa igenom kontrollsessionen och blockera dataområdet. När servern i stället avvisar lagringsbegäran, titta på det fjärran sökvägsnamnet, behörigheterna eller lagringsgränserna. Ingen av grenarna förklaras av att kontrollanslutningen autentiserades.
FTP över TLS kontra SFTP
FTP över TLS är fortfarande FTP: två anslutningar, FTP-svar och en TLS-uppgradering på varje. SFTP är ett SSH-delsystem med en enda anslutning och en helt annan kommandouppsättning. De delar ett syfte och nästan inget annat, så en diagnos som växlar mellan dem börjar oftast med att jämföra fel loggar.
Slå inte av TLS för att en mellanliggande hjälpreda ska kunna inspektera sessionen, och behandla inte ett SFTP-fel som ett FTP-svarproblem. curl-handboken dokumenterar explicit TLS, passivt läge och uppladdningsalternativ om du behöver ett skriptat test, och den är referensen för vad varje flagga faktiskt ändrar.
Välj det protokoll som tjänsten faktiskt erbjuder innan du felsöker det. En server som bara talar SFTP kommer aldrig att producera ett 226-svar, hur klienten än är konfigurerad.
Ett synligt filnamn kontra ett lagrat objekt
Ett synligt filnamn kan representera ett ofullständigt objekt, särskilt efter en avbruten överföring eller en klient som avslutades tidigt. Be tjänstens ägare att jämföra storleken på den avsedda testfilen och en betrodd innehållshash med det lagrade objektet när bytebevarande förväntas.
Binärt läge och ASCII-läge är en annan jämförelse som ändrar resultatet. ASCII-läge kan översätta radslut, så de lagrade byten skiljer sig från den lokala filen även om överföringen lyckades. Behåll binärt läge för en byte-för-byte-kontroll, och lägg inte till konverteringsalternativ för att få en misslyckad överföring att se annorlunda ut.
En vanlig STOR kan ersätta en befintlig fil, och behörighet att logga in eller lista en katalog ger inte behörighet att skapa eller ersätta ett objekt i den. Använd ett tidigare oanvänt fjärrnamn för testet.
Vad du ska jämföra innan du försöker igen
Lägg inte till, återuppta inte och upprepa inte en uppladdning blint över en osäker dellagrad fil. Kom överens med ägaren om du ska börja om under ett nytt namn, använda tjänstens stödda återställningsförfarande eller ta bort det misslyckade testobjektet.
Skriv resultatet som ett av fyra påståenden: den lokala läsningen misslyckades, lagringen nekades, dataöverföringen avbröts, eller överföringen slutfördes och de lagrade byten stämde. Den anteckningen är ett starkare resultat än att ändra skalet, VPN:en och FTP-inställningarna tillsammans tills ett filnamn dyker upp, och den talar om för nästa person vilket steg som ska undersökas. Spara den rensade svarstexten tillsammans med påståendet. Då är ett nytt försök ett beslut, inte en reflex.