Як завантажити файли через FTP: повний технічний посібник
File Transfer Protocol (FTP) — це мережевий протокол, що працює за моделлю клієнт-сервер і забезпечує двонаправлену передачу файлів між локальною машиною та віддаленим хостом через TCP/IP. Він використовує два окремі канали — канал керування (порт 21) для команд і канал даних (порт 20 або узгоджений ефемерний порт) для фактичних корисних навантажень файлів, що є фундаментальною архітектурною деталлю, яка пояснює більшість проблем із брандмауером і пасивним режимом, з якими стикаються фахівці.
Для будь-кого, хто керує веб-сервером, розгортає код застосунку або адмініструє середовище VPS Hosting, опанування FTP та його захищених наступників є обов’язковим. Цей посібник охоплює повний робочий процес: вибір протоколу, налаштування клієнта, навігацію по каталогах, пакетні передачі, керування дозволами та усунення несправностей виробничого рівня — включно з граничними випадками, які типові посібники оминають.
Розуміння архітектури FTP та варіантів протоколу
Перш ніж торкатися клієнта, розуміння того, який саме варіант протоколу ви використовуєте, дозволить уникнути годин налагодження в майбутньому.
Активний та пасивний режими
Дворівнева конструкція FTP створює критичне розходження в поведінці:
- Активний режим: Сервер ініціює з’єднання даних назад до клієнта на порту, який вказує клієнт. Це майже завжди не працює через NAT-маршрутизатори або суворі брандмауери, оскільки вхідне з’єднання від сервера блокується.
- Пасивний режим (PASV): Клієнт ініціює обидва з’єднання. Сервер відкриває випадковий високий порт і повідомляє клієнту підключитися до нього. Це правильний стандарт для практично кожного сучасного розгортання.
Більшість збоїв з’єднання у виробництві виникають через використання активного режиму проти сервера з брандмауером або сервера, діапазон пасивних портів якого не відкритий у власних правилах брандмауера.
Таблиця порівняння протоколів
| Функція | FTP | FTPS (FTP через TLS) | SFTP (SSH File Transfer) | SCP |
|---|---|---|---|---|
| — | — | — | — | — |
| Шифрування | Відсутнє | TLS/SSL | SSH | SSH |
| Порт каналу керування | 21 | 21 (явний) / 990 (неявний) | 22 | 22 |
| Канал даних | Окремий (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, вбудованому менеджеру сайтів і черзі передачі з можливістю відновлення.
Завантаження: Отримайте FileZilla Client (не Server) з filezilla-project.org. Перевірте контрольну суму SHA-512, опубліковану на сторінці завантаження, перед запуском інсталятора — це крок, який більшість посібників пропускає, але атаки на ланцюг постачання популярних утиліт задокументовані.
Після встановлення відкрийте FileZilla та перейдіть до Edit > Settings > Transfers > File Types. Встановіть тип передачі за замовчуванням на Binary, а не Auto. Автовизначення може непомітно пошкодити бінарні файли (зображення, архіви, виконувані файли), застосовуючи перетворення закінчень рядків, коли евристика неправильно класифікує файл.
Крок 2: Створення запису в менеджері сайтів
Використання панелі Quickconnect прийнятне для разових завдань, але вона зберігає облікові дані у відкритому тексті в recentservers.xml. Для будь-якого регулярного з’єднання використовуйте натомість менеджер сайтів.
- Відкрийте File > Site Manager (або натисніть
Ctrl+S). - Натисніть New Site і дайте йому описову назву.
- Налаштуйте вкладку General:
- Protocol: Виберіть SFTP для серверів на основі SSH або FTP з явним TLS для FTPS.
- Host: Введіть ім’я хоста або IP-адресу сервера.
- Port: Залиште порожнім для використання стандартного порту протоколу або вкажіть явно.
- Logon Type: Виберіть Normal для автентифікації за паролем або Key file для SFTP на основі SSH-ключа.
- User / Password: Введіть облікові дані.
- На вкладці Advanced встановіть Default remote directory на ваш веб-корінь (наприклад,
/public_html) і Default local directory на папку вашого проекту. Це усуває час навігації при кожному сеансі. - Натисніть 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: Перевірка завантаження
Не припускайте, що завершена черга передачі означає правильне розгортання. Виконайте такі кроки перевірки:
- У FileZilla: Оновіть віддалений каталог (
F5або клацніть правою кнопкою миші > Refresh) і підтвердіть, що розміри файлів відповідають локальним оригіналам. Невідповідність розміру вказує на усічену передачу. - Через браузер: Завантажте оновлену сторінку та виконайте жорстке оновлення (
Ctrl+Shift+R), щоб обійти кеш браузера. - Через SSH: Для перевірки на стороні сервера порівняйте контрольні суми:
md5sum /public_html/index.htmlПорівняйте результат із контрольною сумою локального файлу. Невідповідність означає, що файл був пошкоджений під час передачі — рідкість із SFTP, але можливо зі звичайним FTP на нестабільних з’єднаннях.
Розширені техніки та виробничі шаблони
Відновлення перерваних передач
Якщо передача великого файлу перервана, FileZilla використовує команду FTP REST (або еквівалент 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 Hosting, де доступний 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.comtelnet your-server.com 21 або nc -zv your-server.com 22iptables -L або ufw status покаже, чи дозволений портsystemctl status sshd530 Login Authentication Failed
- Підтвердіть точність імені користувача — імена користувачів FTP чутливі до регістру в системах Linux
- Перевірте, чи не заблокований обліковий запис:
passwd -S usernameна сервері - Перевірте
/var/log/auth.logабо/var/log/secureдля з’ясування причини відмови - Якщо використовується cPanel, підтвердіть, що термін дії облікового запису FTP не закінчився і він не призупинений
550 Permission Denied під час завантаження
Віддалений каталог не надає доступ на запис автентифікованому користувачу 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).
Пошкодження при передачі в режимах Binary та ASCII
PHP-файли, завантажені в режимі ASCII з клієнта Windows, можуть мати перетворені закінчення рядків у стилі Windows (rn), що може порушити роботу певних аналізаторів. Підтвердіть, що FileZilla налаштований на режим Binary у розділі Transfer > Transfer Type > Binary.
Альтернативні методи завантаження
FTP не завжди є правильним інструментом. Варто знати такі альтернативи:
cPanel / Plesk File Manager: Доступний через веб-панель керування на Shared Web Hosting та 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 |
| Регулярне розгортання сайту без SSH | SFTP через FileZilla |
| Автоматизоване розгортання CI/CD-конвеєра | `lftp` або `rsync` через SSH |
| Великий бінарний файл, одноразова передача | `scp` |
| Інкрементальне розгортання коду | `rsync` або Git post-receive хук |
| Застаріла система, що вимагає FTP | Мінімум FTPS (явний 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 Hosting.
Які дозволи на файли повинні мати файли WordPress після завантаження через FTP?
Основні файли WordPress повинні мати 644, каталоги — 755, а wp-config.php — 600 (лише читання/запис для власника). Каталог wp-content/uploads вимагає 755 або 775, щоб веб-сервер міг записувати завантажені медіафайли. Ніколи не встановлюйте жоден каталог WordPress на 777.
Чи є обмеження розміру файлу при завантаженні через FTP?
FTP та SFTP самі по собі не мають вбудованого обмеження розміру файлу — передачі виконуються потоково. Практичні обмеження виникають через квоти диска на стороні сервера, PHP upload_max_filesize (не стосується FTP, який повністю обходить PHP) або обмеження файлової системи (ext4 підтримує файли до 16 TB). Для Shared Web Hosting хостинг-провайдер може встановлювати квоту диска, яка обмежує загальний обсяг сховища, а не розмір окремого файлу.
