Ստուգեք վերջնական 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-ը կարող է փոխարինել գոյություն ունեցող ֆայլը, և մուտքի կամ գրացուցակի ցանկի թույլտվությունը չի հաստատում դրա մեջ օբյեկտ ստեղծելու կամ փոխարինելու թույլտվություն։ Փորձարկման համար օգտագործեք նախկինում չօգտագործված հեռավոր անուն։
Ինչ համեմատել նորից փորձելուց առաջ
Չավելացնեք, չշարունակեք և չկրկնեք վերբեռնումը կուրորեն անորոշ մասնակի ֆայլի վրա։ Համաձայնեք սեփականատիրոջ հետ՝ արդյոք նոր անունով վերսկսել, օգտագործել ծառայության աջակցվող վերականգնման ընթացակարգը, թե հեռացնել ձախողված փորձնական օբյեկտը։
Արդյունքը գրեք չորս պնդումներից մեկի տեսքով՝ տեղական ընթերցումը ձախողվեց, պահպանումը մերժվեց, տվյալների փոխանցումը չեղարկվեց, կամ փոխանցումն ավարտվեց և պահված բայթերը համընկան։ Այդ գրառումն ավելի ուժեղ արդյունք է, քան shell-ը, VPN-ը և FTP կարգավորումները միասին փոխելը, մինչև ֆայլի անուն հայտնվի, և այն ասում է հաջորդ մարդուն, թե որ փուլը ստուգել։ Պահեք մաքրված պատասխանի տեքստը այդ պնդման հետ։ Այդ դեպքում նոր փորձը որոշում է, ոչ թե ռեֆլեքս։