Проверете окончателния отговор на FTP, преди да се доверите на качване
Отговор 150 означава, че прехвърлянето е започнало, а не че файлът е запазен. Разделете локалното четене, разрешението за съхранение, връзката за данни и окончателния отговор.
FTP клиент може да приеме команда put много преди сървърът да е получил файла и именно в промеждутъка между тези две събития живеят повечето загадки на качването. Трябва да се завършат четири етапа: локалният файл се чете, сървърът приема заявката за съхранение, връзката за данни пренася байтовете и прехвърлянето достига окончателен положителен отговор. Сравняването на етапите е по-полезно от сравняването на клиенти, защото работещото влизане и появилото се име на файл и двете спират преди финала.
Предварителен отговор срещу окончателен отговор
За STOR отговор 125 или 150 е предварителен. Той казва, че сървърът е готов да опита и че връзка за данни се отваря, а не че обектът съществува в окончателния си вид. Операцията е завършена само когато прехвърлянето достигне положителен отговор за завършване, обикновено 226 или 250, в контекста на тази операция.
426 означава, че прехвърлянето е прекратено, а число, отпечатано от друга команда, не е резултатът от това качване. Четете отговора, който принадлежи на STOR, а не последното число на екрана. Ако клиентът излезе, преди този отговор да пристигне, нямате никакво доказателство за завършване.
Управляваща връзка срещу връзка за данни
Удостоверяването и списъкът на директорията използват управляващата връзка. Байтовете използват отделна връзка за данни и нейната крайна точка се договаря за всяко прехвърляне. Успешното влизане доказва управляващия път и не казва нищо за това дали адресът за данни е достъпен от клиента.
Когато сървърът не може да отвори връзката за данни, проучете договорената крайна точка и разрешения път. Пасивният режим все още изисква използваем адрес за данни и порт, а защитна стена или устройство NAT между клиента и сървъра може да разреши управляващата сесия, като блокира диапазона за данни. Когато вместо това сървърът отхвърли заявката за съхранение, погледнете отдалеченото име на път, правата или ограниченията за съхранение. Нито един от двата клона не се обяснява с това, че управляващата връзка се е удостоверила.
FTP през TLS срещу SFTP
FTP през TLS все още е FTP: две връзки, FTP отговори и TLS надграждане на всяка. SFTP е подсистема на SSH с една връзка и напълно различен набор от команди. Те споделят цел и почти нищо друго, затова диагностика, която преминава между тях, обикновено започва със сравняване на грешните журнали.
Не изключвайте TLS, за да позволите на междинен помощник да прегледа сесията, и не третирайте неуспех на SFTP като проблем с FTP отговори. Ръководството на curl документира явния TLS, пасивния режим и опциите за качване, ако ви трябва скриптов тест, и е справочникът за това какво всъщност променя всеки флаг.
Изберете протокола, който услугата всъщност предлага, преди да го отстранявате. Сървър, който говори само SFTP, никога няма да даде отговор 226, независимо как е конфигуриран клиентът.
Видимо име на файл срещу съхранен обект
Видимото име на файл може да представлява непълен обект, особено след прекъснато прехвърляне или клиент, който е излязъл рано. Помолете собственика на услугата да сравни размера на предвидения тестов файл и доверения хеш на съдържанието със съхранения обект, когато се очаква запазване на байтовете.
Двоичният и ASCII режимът са още едно сравнение, което променя резултата. ASCII режимът може да преобразува краищата на редовете, така че съхранените байтове се различават от локалния файл, дори когато прехвърлянето е успешно. Запазете двоичния режим за проверка байт по байт и не добавяйте опции за преобразуване, за да изглежда неуспешното прехвърляне различно.
Обикновен STOR може да замени съществуващ файл и разрешението за влизане или за списък на директория не установява разрешение за създаване или замяна на обект в нея. Използвайте за теста отдалечено име, което не е използвано преди.
Какво да сравните преди повторен опит
Не добавяйте, не възстановявайте и не повтаряйте качване сляпо върху несигурен частичен файл. Уговорете се със собственика дали да рестартирате под ново име, да използвате поддържаната от услугата процедура за възстановяване или да премахнете неуспешния тестов обект.
Запишете резултата като едно от четири твърдения: локалното четене се провали, съхранението беше отказано, прехвърлянето на данни беше прекратено или прехвърлянето завърши и съхранените байтове съвпаднаха. Този запис е по-силен резултат от това да сменяте обвивката, VPN и FTP настройките заедно, докато се появи име на файл, и казва на следващия човек кой етап да провери. Пазете изчистения текст на отговора с това твърдение. Тогава повторният опит е решение, а не рефлекс.