15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
09.10.2024

Как да качвате файлове с FTP: Пълно техническо ръководство

File Transfer Protocol (FTP) е мрежов протокол, работещ на принципа клиент-сървър, който позволява двупосочно прехвърляне на файлове между локална машина и отдалечен хост чрез TCP/IP. Той използва два отделни канала — управляващ канал (порт 21) за команди и канал за данни (порт 20 или договорен ефемерен порт) за действителното прехвърляне на файлове, което е фундаментален архитектурен детайл, обясняващ повечето проблеми с защитни стени и пасивен режим, с които се сблъскват специалистите.

За всеки, който управлява уеб сървър, разгръща код на приложения или администрира среда за VPS Хостинг, овладяването на FTP и неговите сигурни наследници е задължително. Това ръководство обхваща пълния работен процес: избор на протокол, конфигурация на клиент, навигация в директории, групови прехвърляния, управление на права и отстраняване на проблеми на производствено ниво — включително гранични случаи, които общите ръководства пропускат.

Разбиране на архитектурата на FTP и вариантите на протокола

Преди да докоснете клиент, разбирането на това кой вариант на протокола всъщност използвате предотвратява часове на отстраняване на грешки по-късно.

Активен срещу пасивен режим

Двуканалният дизайн на FTP създава критично разделение в поведението:

  • Активен режим: Сървърът инициира връзката за данни обратно към клиента на порт, посочен от клиента. Това почти винаги се проваля при NAT рутери или строги защитни стени, тъй като входящата връзка от сървъра е блокирана.
  • Пасивен режим (PASV): Клиентът инициира и двете връзки. Сървърът отваря произволен висок порт и казва на клиента да се свърже с него. Това е правилната настройка по подразбиране за практически всяко съвременно разгръщане.

Повечето неуспешни връзки в производствена среда се дължат на използване на активен режим срещу сървър зад защитна стена или сървър, чийто диапазон от пасивни портове не е отворен в собствените му правила на защитната стена.

Таблица за сравнение на протоколите

ФункцияFTPFTPS (FTP over TLS)SFTP (SSH File Transfer)SCP
КриптиранеНямаTLS/SSLSSHSSH
Порт на управляващия канал2121 (явен) / 990 (неявен)2222
Канал за данниОтделен (20/ефемерен)Отделен (обвит в TLS)Единичен мултиплексиран каналЕдиничен канал
Съвместимост с защитни стениЛошаЛошаОтличнаОтлична
Възобновяване на прехвърляниятаДа (команда REST)ДаДаНе
Списък на директорииДаДаДаНе
Необходим сертификатНеДа (минимум от страна на сървъра)Не (ключ или парола)Не
Препоръчан за производствена средаНеСитуационноДаДа (групово копиране)

Практическият извод: Използвайте SFTP по подразбиране. Използвайте FTPS само когато наследена система изрично го изисква. Избягвайте напълно обикновения FTP на всеки сървър, достъпен от интернет — идентификационните данни и съдържанието на файловете се предават в открит текст и могат тривиално да бъдат прихванати.

Предварителни изисквания и събиране на идентификационни данни

Преди да отворите какъвто и да е клиент, съберете следното от вашия хостинг доставчик или системен администратор:

  • Хостово име или IP адрес — напр. ftp.yourdomain.com или 203.0.113.45
  • Протокол — FTP, FTPS (явен или неявен) или SFTP
  • Порт — 21 за FTP/FTPS-явен, 990 за FTPS-неявен, 22 за SFTP
  • Потребителско име и парола — или SSH частен ключ за SFTP удостоверяване с ключ
  • Отдалечен основен път — обикновено /public_html, /var/www/html или /home/username/public_html в зависимост от сървърния стек

Ако работите с VPS с cPanel, вашите FTP идентификационни данни се създават в cPanel > FTP Accounts, където можете също да ограничите всеки акаунт до конкретна директория — практика за сигурност, която ограничава щетите при компрометиране на идентификационните данни.

Стъпка 1: Инсталиране и конфигуриране на FileZilla

FileZilla остава най-широко разгърнатият кросплатформен FTP клиент поради поддръжката му за FTP, FTPS и SFTP, вградения Site Manager и опашката за прехвърляне с възможност за възобновяване.

Изтегляне: Получете FileZilla Client (не Server) от filezilla-project.org. Проверете SHA-512 контролната сума, публикувана на страницата за изтегляне, преди да стартирате инсталатора — това е стъпка, която повечето ръководства пропускат, но атаките по веригата на доставки срещу популярни помощни програми са документирани.

След инсталацията отворете FileZilla и навигирайте до Edit > Settings > Transfers > File Types. Задайте типа на прехвърляне по подразбиране на Binary, а не Auto. Автоматичното разпознаване може безшумно да повреди двоични файлове (изображения, архиви, изпълними файлове), като приложи преобразуване на края на ред, когато евристиката неправилно класифицира файла.

Стъпка 2: Създаване на запис в Site Manager

Използването на лентата Quickconnect е приемливо за еднократни задачи, но тя съхранява идентификационните данни в открит текст в recentservers.xml. За всяка повтаряща се връзка използвайте Site Manager.

  1. Отворете File > Site Manager (или натиснете Ctrl+S).
  2. Кликнете New Site и дайте описателно име.
  3. Конфигурирайте раздела General:
  • Protocol: Изберете SFTP за SSH-базирани сървъри или FTP с явен TLS за FTPS.
  • Host: Въведете хостовото име или IP на сървъра.
  • Port: Оставете празно за използване на протоколната стойност по подразбиране или посочете изрично.
  • Logon Type: Изберете Normal за удостоверяване с парола или Key file за SFTP с SSH ключ.
  • User / Password: Въведете идентификационните данни.
  1. В раздела Advanced задайте Default remote directory на вашия уеб корен (напр. /public_html) и Default local directory на папката на вашия проект. Това елиминира времето за навигация при всяка сесия.
  2. Кликнете Connect.

За SFTP с удостоверяване с ключ — препоръчаният подход за Dedicated Servers — насочете полето Key file към вашия частен ключ (формат .pem или .ppk). FileZilla използва собствен формат на ключове; конвертирайте OpenSSH ключове с PuTTYgen при необходимост.

Стъпка 3: Навигация в интерфейса с двойни панели

След свързване FileZilla представя разделен изглед:

  • Ляв панел (Local Site): Вашата локална файлова система. Навигирайте до директорията, съдържаща файловете, които искате да качите.
  • Десен панел (Remote Site): Файловата система на сървъра. Навигирайте до целевата директория — обикновено /public_html за уеб съдържание.
  • Долни панели на опашката: Показват опашката за прехвърляне, неуспешните прехвърляния и успешните прехвърляния с времеви отпечатъци и брой байтове.

Дървото на директориите в горната част на всеки панел и списъкът с файлове под него са независими — кликването върху папка в дървото не превърта автоматично списъка с файлове. Това обърква новите потребители, които се чудят защо списъкът им с файлове изглежда празен.

Стъпка 4: Качване на файлове

Единичен файл или ръчна селекция

Кликнете с десния бутон върху файл в локалния панел и изберете Upload или го плъзнете към отдалечения панел. За избор на множество файлове използвайте Ctrl+Click (Windows/Linux) или Cmd+Click (macOS) за несъседен избор или Shift+Click за диапазон.

Качване чрез плъзгане и пускане

Изберете файлове в локалния панел и ги плъзнете към целевата папка в отдалечения панел. FileZilla поставя всички елементи в опашка и започва прехвърлянето незабавно.

Синхронизирано качване на директория

За разгръщане на цяла директория на проект кликнете с десния бутон върху локалната папка и изберете Upload. FileZilla рекурсивно качва цялото съдържание, запазвайки структурата на директориите от отдалечената страна.

Наблюдение на напредъка на прехвърлянето

Опашката за прехвърляне в долната част показва:

  • Име на файл и размер
  • Скорост на прехвърляне (байтове/секунда)
  • Изминало и прогнозно време
  • Отдалечен път на местоназначение

Прехвърляне, което завършва, но показва 0 прехвърлени байта, е безшумен провал — файлът е създаден, но е празен. Това обикновено показва проблем с правата за достъп до целевата директория или нарушение на дисковата квота на сървъра.

Стъпка 5: Задаване на правилни права за достъп до файлове след качване

Това е най-често пропусканата стъпка и източникът на значителен процент от заявките за поддръжка „уебсайтът ми е счупен след качване”.

След качването кликнете с десния бутон върху файл или директория в отдалечения панел и изберете File permissions. Числовото представяне съответства директно на Unix октети за права:

  • 644 — Стандартно за уеб файлове (четене/запис за собственика, само четене за група/останали)
  • 755 — Стандартно за директории и изпълними скриптове
  • 600 — Частни файлове, които не трябва да са достъпни от уеб (напр. конфигурационни файлове с идентификационни данни)
  • 777 — Никога не използвайте това в производствена среда; предоставя достъп за запис на всички

За рекурсивно коригиране на правата за цяло дърво от качени директории отметнете Recurse into subdirectories и приложете 644 за файлове и 755 за директории поотделно. FileZilla не прави разлика между файлове и директории в един рекурсивен проход — трябва да го стартирате два пъти с подходящия избран филтър.

Алтернативно, след свързване чрез SSH, коригирайте правата масово:

find /public_html -type f -exec chmod 644 {} ;
find /public_html -type d -exec chmod 755 {} ;

Стъпка 6: Проверка на качването

Не приемайте, че завършената опашка за прехвърляне означава, че разгръщането е правилно. Извършете следните стъпки за проверка:

  1. В FileZilla: Обновете отдалечената директория (F5 или кликнете с десния бутон > Refresh) и потвърдете, че размерите на файловете съответстват на локалните оригинали. Несъответствие в размера показва прекъснато прехвърляне.
  2. Чрез браузър: Заредете актуализираната страница и извършете принудително опресняване (Ctrl+Shift+R), за да заобиколите кеша на браузъра.
  3. Чрез SSH: За проверка от страна на сървъра сравнете контролните суми:
md5sum /public_html/index.html

Сравнете резултата с контролната сума на локалния файл. Несъответствие означава, че файлът е бил повреден при пренос — рядко при SFTP, но възможно при обикновен FTP при нестабилни връзки.

Разширени техники и производствени модели

Възобновяване на прекъснати прехвърляния

Ако прехвърлянето на голям файл е прекъснато, FileZilla използва командата REST на FTP (или еквивалента на SFTP), за да възобнови от последното потвърдено отместване на байта. В раздела Failed transfers кликнете с десния бутон върху неуспешния елемент и изберете Reset and requeue failed files, след което стартирайте опашката отново. Това работи надеждно с SFTP; възобновяването при обикновен FTP зависи от поддръжката на сървъра за командата REST.

Изключване на файлове от качване

Edit > Filename Filters на FileZilla ви позволява да дефинирате правила за изключване на файлове, съответстващи на шаблони — например изключване на директории .git, node_modules, .DS_Store или файлове .env от случайно качване. Това е критична предпазна мярка: качването на файл .env, съдържащ идентификационни данни за база данни или API ключове, в публичен уеб корен е сериозен инцидент за сигурността.

Скриптирани/автоматизирани FTP прехвърляния

За CI/CD конвейери или планирани разгръщания графичният интерфейс на FileZilla не е подходящ. Използвайте вместо това помощната програма lftp от командния ред:

lftp -u username,password sftp://your-server.com << 'EOF'
set sftp:auto-confirm yes
mirror --reverse --delete --verbose /local/project/ /public_html/
EOF

Флагът --reverse качва (от локално към отдалечено), --delete премахва отдалечени файлове, които не присъстват локално (използвайте с внимание), а --verbose записва всяка операция. Този модел е подходящ за автоматизирани разгръщания в среди за VPS Хостинг, където е наличен SSH достъп.

Използване на rsync чрез SSH като алтернатива на FTP

За големи разгръщания или инкрементални синхронизации rsync чрез SSH е значително по-ефективен от FTP, тъй като прехвърля само променените блокове в рамките на файловете, а не цели файлове:

rsync -avz --progress --delete /local/project/ user@your-server.com:/public_html/
    -a — Режим на архив (запазва права, времеви отпечатъци, символни връзки)
    -v — Подробен изход
    -z — Компресиране на данните по време на прехвърляне
    --delete — Премахване на отдалечени файлове, изтрити локално
    
    rsync изисква SSH достъп и не е наличен чрез контролни панели за споделен хостинг, но е правилният инструмент за всяка среда, в която контролирате сървърния стек.
    Отстраняване на често срещани проблеми с FTP и SFTP
    Изтичане на времето за връзка или отказана връзка
    
    Проверете дали хостовото име се разрешава правилно: nslookup ftp.yourdomain.com
  • Потвърдете, че портът е отворен: telnet your-server.com 21 или nc -zv your-server.com 22
  • Проверете правилата на защитната стена на сървъра — в Linux iptables -L или ufw status ще покажат дали портът е разрешен
  • За SFTP потвърдете, че SSH демонът работи: systemctl status sshd
  • 530 Неуспешно удостоверяване при влизане

    • Потвърдете, че потребителското име е точно — FTP потребителските имена са чувствителни към главни/малки букви в Linux системи
    • Проверете дали акаунтът не е заключен: passwd -S username на сървъра
    • Проверете /var/log/auth.log или /var/log/secure за причината за отхвърлянето
    • Ако използвате cPanel, потвърдете, че FTP акаунтът не е изтекъл или спрян

    550 Отказан достъп при качване

    Отдалечената директория не предоставя достъп за запис на удостоверения FTP потребител. Проверете собствеността и правата:

    ls -la /public_html/

    Ако директорията е собственост на друг потребител, или коригирайте собствеността (chown) или предоставете право за запис на групата (chmod g+w). При споделен хостинг това се обработва чрез файловия мениджър на контролния панел на хостинга.

    Неуспешни връзки в пасивен режим

    Ако виждате „Could not retrieve directory listing” след успешно влизане, диапазонът от пасивни портове на сървъра не е достъпен. В FileZilla отидете на Edit > Settings > FTP > Passive mode и опитайте Fall back to active mode. От страна на сървъра се уверете, че диапазонът от пасивни портове (обикновено 49152–65534) е отворен в защитната стена и правилно конфигуриран в настройките на FTP демона (напр. pasv_min_port и pasv_max_port в vsftpd.conf).

    Повреда при прехвърляне в двоичен срещу ASCII режим

    PHP файлове, качени в ASCII режим от Windows клиент, може да имат преобразувани Windows-стил окончания на редове (rn), което може да наруши работата на определени парсери. Потвърдете, че FileZilla е настроен на режим Binary в Transfer > Transfer Type > Binary.

    Алтернативни методи за качване

    FTP не винаги е правилният инструмент. Следните алтернативи си заслужава да се знаят:

    cPanel / Plesk File Manager: Наличен чрез уеб-базирания контролен панел на Споделен Уеб Хостинг и VPS Control Panels. Подходящ за малки редакции и качване на единични файлове. Има ограничение от 2 GB за размера на файла в повечето реализации и не е подходящ за групови прехвърляния.

    SCP (Secure Copy): Прост, скриптируем инструмент за копиране, базиран на SSH. Без възможност за възобновяване, без списък на директории, но изключително надежден за еднократни прехвърляния:

    scp -r /local/project/ user@your-server.com:/public_html/

    Разгръщане базирано на Git: Публикувайте в голо хранилище на сървъра и използвайте кука post-receive за извличане на файлове в уеб корена. Това е най-чистият модел за разгръщане на код — осигурява история на версиите, възможност за връщане назад и елиминира напълно ръчното управление на файлове.

    Синхронизация с обектно хранилище / CDN: За статични активи синхронизирането с S3-съвместима кофа и обслужването чрез CDN е по-мащабируемо от разгръщането чрез FTP и напълно премахва уеб сървъра от пътя за доставка на статични активи.

    Бърза матрица за вземане на решения: Избор на правилния метод за прехвърляне

    СценарийПрепоръчан метод
    Еднократна редакция на файл при споделен хостингcPanel File Manager
    Редовно разгръщане на уебсайт без SSHSFTP чрез FileZilla
    Автоматизирано разгръщане чрез CI/CD конвейер`lftp` или `rsync` чрез SSH
    Голям двоичен файл, еднократно прехвърляне`scp`
    Инкрементално разгръщане на код`rsync` или Git post-receive кука
    Наследена система, изискваща FTPFTPS (явен TLS) като минимум
    Групово разгръщане на статични активиСинхронизация с S3-съвместимо обектно хранилище

    Ключов технически контролен списък преди пускане в производство

    • Протокол: Само SFTP или FTPS — никога обикновен FTP на производствен сървър
    • Идентификационни данни: Използвайте специализирани FTP/SFTP акаунти, ограничени до минимално необходимата директория, а не root или основния системен потребител
    • Режим на прехвърляне: Binary, а не Auto или ASCII
    • Права за достъп до файлове: 644 за файлове, 755 за директории — проверени след качване
    • Чувствителни файлове: Потвърдете, че .env, .git/, node_modules/ и конфигурационни файлове с идентификационни данни са изключени от качване чрез филтри за имена на файлове
    • Проверка на контролна сума: Сравнение на MD5 или SHA-256 за критични файлове след прехвърляне
    • Пасивен режим: Активиран по подразбиране в FTP клиента
    • SSH ключове: Използвайте удостоверяване с ключ за SFTP на всеки сървър, който контролирате; деактивирайте удостоверяването с парола в sshd_config където е възможно

    Често задавани въпроси

    Каква е разликата между FTP и SFTP?

    FTP предава данни и идентификационни данни в открит текст по два отделни TCP канала (управляващ на порт 21, данни на порт 20 или ефемерен). SFTP е напълно различен протокол, изграден върху SSH, който мултиплексира всичко през единичен криптиран канал на порт 22. Те споделят наименование, но не споделят никакъв протоколен код.

    Защо FileZilla показва „Connection timed out” дори при правилни идентификационни данни?

    Изтичане на времето преди удостоверяване обикновено означава, че портът на сървъра е недостъпен — блокиран от защитна стена, услугата не работи или хостовото име не се разрешава до правилния IP. Изтичане на времето след удостоверяване обикновено показва проблем с пасивния режим, при който диапазонът от портове на канала за данни е блокиран от защитна стена. Проверете правилата на защитната стена от страна на сървъра и потвърдете, че диапазонът от пасивни портове е отворен.

    Мога ли да използвам FTP за качване на файлове на VPS без контролен панел?

    Да. Инсталирайте SSH демон с поддръжка на SFTP (OpenSSH, който е стандартен за всички Linux дистрибуции) — не е необходим допълнителен FTP сървърен софтуер. Свържете се с FileZilla, използвайки протокола SFTP на порт 22 и вашите SSH идентификационни данни или двойка ключове. Това е препоръчаният подход за всяка среда за VPS Хостинг.

    Какви права за достъп до файлове трябва да имат WordPress файловете след FTP качване?

    Основните файлове на WordPress трябва да са 644, директориите 755, а wp-config.php трябва да е 600 (само четене/запис за собственика). Директорията wp-content/uploads изисква 755 или 775, за да може уеб сървърът да записва качени медии. Никога не задавайте 777 за никоя WordPress директория.

    Има ли ограничение за размера на файла при качване чрез FTP?

    FTP и SFTP сами по себе си не налагат присъщо ограничение за размера на файла — прехвърлянията се поточно предават. Практическите ограничения идват от дискови квоти от страна на сървъра, PHP upload_max_filesize (без значение за FTP, който заобикаля PHP напълно) или ограничения на файловата система (ext4 поддържа файлове до 16 TB). При Споделен Уеб Хостинг хостинг доставчикът може да наложи дискова квота, която ограничава общото хранилище, а не размера на отделния файл.

    15%

    Спести 15% на всички хостинг услуги

    Тествай уменията си и получи Отстъпка за всеки хостинг план

    Използвайте код:

    Skills
    За начало