Проверите коначни 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 подешавања док се не појави име датотеке и говори следећој особи коју фазу прегледати. Сачувајте очишћени текст одговора уз ту тврдњу. Тада је нови покушај одлука, а не рефлекс.