Передача файлов на сервер (scp, rsync, SFTP)
Как копировать файлы между компьютером и сервером с помощью scp, rsync или графического SFTP-клиента (FileZilla, WinSCP).
На этой странице
Файлы передаются на сервер и обратно тоже по SSH, с теми же данными, что и при подключении: IP-адрес, пользователь root, порт 22 и пароль или SSH-ключ. IP-адрес указан в панели app.blackbox.md, в разделе «Мои серверы» (app.blackbox.md/my-servers; с blackbox.md: «Личный кабинет» → «Панель управления» → «Мои серверы»), в поле «IP» на карточке сервера.
Доступно: владельцу аккаунта blackbox.md с активным сервером и учётными данными root (паролем или SSH-ключом): Подключение к серверу по SSH (Windows, macOS, Linux). Для выделенных серверов данные для доступа вы согласуете с командой.
Какой инструмент выбрать
| Инструмент | Для чего подходит | Системы |
|---|---|---|
scp |
разово скопировать файл или папку | macOS, Linux, Windows 10 и 11 |
rsync |
большие папки, регулярное копирование, продолжение после обрыва | macOS, Linux; Windows через WSL |
sftp |
сеанс, в котором вы перемещаетесь по папкам сервера | macOS, Linux, Windows 10 и 11 |
| FileZilla, WinSCP | работа мышью, без команд | FileZilla: все; WinSCP: Windows |
Все они работают через SSH, поэтому данные передаются в зашифрованном виде. Команды scp, sftp и rsync выполняются на вашем компьютере, а не на сервере. Вместо IP_СЕРВЕРА подставьте адрес своего сервера.
scp: быстрое копирование
scp уже есть в macOS и Linux. В Windows 10 и 11 он входит в клиент OpenSSH вместе с ssh и sftp: запускайте его в PowerShell, синтаксис тот же.
Загрузите файл в /root на сервере:
scp backup.zip root@IP_СЕРВЕРА:/root/Папка назначения должна существовать до копирования. На новом сервере без веб-сервера нет даже /var/www; создайте её со своего компьютера:
ssh root@IP_СЕРВЕРА "mkdir -p /var/www/site"Загрузите папку с параметром -r (на сервере появится /var/www/site):
scp -r site root@IP_СЕРВЕРА:/var/www/Скачайте файл в текущую папку (точка в конце) и папку целиком:
scp root@IP_СЕРВЕРА:/root/backup.tar.gz .
scp -r root@IP_СЕРВЕРА:/var/www/site ./site-backupНужный ключ указывается через -i. Если SSH работает на порту, отличном от 22 (например, на сервере другого провайдера; серверы BLACKBOX используют порт 22), добавьте -P — заглавной буквой, в отличие от ssh -p:
scp -i ~/.ssh/id_ed25519 -P ПОРТ backup.zip root@IP_СЕРВЕРА:/root/В PowerShell локальные пути записываются как обычно в Windows:
scp -r C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\Documents\site root@IP_СЕРВЕРА:/var/www/sftp: интерактивный сеанс
Параметры -i и -P работают так же, как у scp.
sftp root@IP_СЕРВЕРАКоманда в приглашении sftp> |
Что делает |
|---|---|
ls, cd /var/www/site |
показывает содержимое и меняет папку на сервере |
lls, lcd site |
то же самое на вашем компьютере |
put index.html, put -r assets |
загружает файл или папку |
get config.php, get -r uploads |
скачивает файл или папку |
exit |
завершает сеанс |
rsync: лучший выбор для больших папок и регулярного копирования
rsync копирует только разницу: при повторном запуске передаются лишь новые и изменённые файлы, а прерванное копирование можно продолжить. Он должен быть установлен с обеих сторон. В macOS он уже есть, в Linux его при необходимости ставят из менеджера пакетов, а в Windows запускают из WSL (Windows Subsystem for Linux); без WSL используйте scp или WinSCP. Если на сервере его нет, установите:
Ubuntu и Debian:
apt update
apt install -y rsyncAlmaLinux и CentOS Stream:
dnf install -y rsyncЗагрузите содержимое локальной папки site в /var/www/site:
rsync -avz --progress site/ root@IP_СЕРВЕРА:/var/www/site/| Параметр | Что делает |
|---|---|
-a |
копирует рекурсивно, сохраняя права доступа, время изменения и символические ссылки |
-v, --progress |
показывает файлы и ход копирования |
-z |
сжимает данные при передаче; помогает для текста, но не для архивов, изображений и видео |
--partial |
сохраняет недокачанный файл, чтобы следующий запуск продолжил с места остановки |
-P |
--partial --progress (у scp -P — это порт) |
-n |
пробный запуск (--dry-run): показывает, что будет сделано, ничего не меняя |
--delete |
удаляет в месте назначения файлы, которых больше нет в источнике |
Косая черта в конце источника важна: site/ копирует содержимое папки, а site создаёт ещё один уровень — /var/www/site/site.
Большой файл с докачкой (если связь оборвётся, запустите ту же команду ещё раз):
rsync -avP backup.tar.gz root@IP_СЕРВЕРА:/root/Скачайте папку с сервера:
rsync -avz --progress root@IP_СЕРВЕРА:/var/www/site/ ./site-backup/Другой порт или нужный ключ задаются через -e:
rsync -avz --progress -e "ssh -p ПОРТ -i ~/.ssh/id_ed25519" site/ root@IP_СЕРВЕРА:/var/www/site/Точная копия с --delete
Чтобы файлы, удалённые у вас, исчезали и с сервера, добавьте --delete. Сначала выполните пробный запуск с -n: строки deleting … — это файлы, которые будут удалены.
rsync -avzn --delete site/ root@IP_СЕРВЕРА:/var/www/site/Если список верный, выполните ту же команду без n:
rsync -avz --delete site/ root@IP_СЕРВЕРА:/var/www/site/Опасно С
--deleteошибка в пути (пропущенная косая черта, перепутанные источник и назначение, пустая локальная папка) может удалить файлы на сервере, а BLACKBOX не делает автоматических резервных копий вашего сервера. Сначала запускайте с-nи заранее сделайте копию: Стратегия резервного копирования для вашего сервера.
FileZilla (Windows, macOS, Linux)
FileZilla Client — бесплатная программа: официальный сайт FileZilla. Названия ниже приведены по английскому интерфейсу; в русском или румынском они переведены.
- Откройте «File» → «Site Manager...» и нажмите «New site».
- Заполните поля:
- «Protocol» — «SFTP - SSH File Transfer Protocol» (не «FTP»);
- «Host» — IP-адрес; «Port» —
22; «User» —root; - «Logon Type» — «Normal» с паролем root в поле «Password» или «Key file» с приватным ключом, выбранным через «Browse...» (
.ppkили ключ OpenSSH, напримерid_ed25519). В macOS папка.sshскрыта: в окне выбора файла нажмите Cmd + Shift + G и введите~/.ssh. Если FileZilla предложит преобразовать ключ, согласитесь.
- Нажмите «Connect».
- При первом подключении появится «Unknown host key»: отметьте «Always trust this host, add this key to the cache» и нажмите «OK».
- Перетаскивайте файлы между левой панелью (компьютер) и правой (сервер).
Ключ можно добавить один раз для всех SFTP-подключений: «Edit» → «Settings...» (в macOS: «FileZilla» → «Settings...») → «Connection» → «SFTP» → «Add key file...».
В панели «Quickconnect» укажите в поле «Host» sftp://IP_СЕРВЕРА или в поле «Port» — 22. Иначе FileZilla попробует подключиться по FTP, и подключение не удастся.
WinSCP (Windows)
WinSCP — бесплатная программа: официальный сайт WinSCP. Названия ниже тоже приведены по английскому интерфейсу. При запуске открывается окно «Login».
- Выберите «New Site» и заполните поля: «File protocol» — «SFTP»; «Host name» — IP-адрес; «Port number» —
22; «User name» —root; «Password» — пароль root (на сервере «Пароль + ключ»). - Для входа по ключу: «Advanced...» → «SSH» → «Authentication» → «Private key file» — выберите файл
.ppk, который вы используете в PuTTY. Если выбрать ключ OpenSSH, WinSCP предложит преобразовать его в.ppk— согласитесь. Нажмите «OK». - Нажмите «Save», затем «Login».
- При первом подключении подтвердите ключ сервера кнопкой «Accept» (в старых версиях — «Yes»).
- Перетаскивайте файлы между левой панелью (компьютер) и правой (сервер).
Серверы «Только ключ»
На сервере со значком «Только ключ» (на карточке в разделе «Мои серверы») пароль root по SSH не работает, а значит, не работает и в scp, sftp, rsync, FileZilla и WinSCP. Настройте ключ в клиенте:
scp,sftpиrsyncсами пробуют стандартные ключи из~/.ssh(например,id_ed25519); другой ключ укажите через-i(дляrsync— внутри-e);- FileZilla: «Logon Type» — «Key file» или ключ из «Settings»; WinSCP: «Private key file».
Без нужного ключа появляется Permission denied (publickey), а в FileZilla и WinSCP — No supported authentication methods available (server sent: publickey). Ключ нового компьютера добавьте кнопкой «Добавить SSH-ключ»: Добавление и удаление SSH-ключей на сервере. Вход по паролю снова включается кнопкой «Включить вход по паролю»: Включение и отключение входа по паролю по SSH.
После загрузки сайта: владелец и права доступа
Файлы, загруженные под root, принадлежат root (а rsync -a даже сохраняет ID пользователя с вашего компьютера). Веб-сервер должен их читать, а приложение — записывать в свои папки (загрузки, кеш). Сделайте владельцем пользователя, от имени которого работает веб-сервер или PHP-FPM:
| Система | nginx | Apache | PHP-FPM (по умолчанию) |
|---|---|---|---|
| Ubuntu, Debian | www-data |
www-data |
www-data |
| AlmaLinux, CentOS Stream | nginx |
apache |
apache |
Фактический пользователь виден в строках, которые не начинаются с root:
ps -eo user,comm | grep -E 'nginx|apache2|httpd|php-fpm'Ubuntu и Debian
chown -R www-data:www-data /var/www/site
find /var/www/site -type d -exec chmod 755 {} +
find /var/www/site -type f -exec chmod 644 {} +AlmaLinux и CentOS Stream
Те же команды, но с пользователем из таблицы (например, nginx:nginx или apache:apache). Кроме того, здесь по умолчанию включён SELinux, который проверяет метку каждого файла. У файлов может оказаться неверная метка (например, файлы, перенесённые командой mv из /root, сохраняют старую), и тогда сайт отвечает 403 Forbidden. После загрузки восстановите метки:
restorecon -Rv /var/www/siteЧтобы приложение могло записывать в папку (например, uploads), SELinux требует для неё отдельную метку. Подставьте путь к своей папке:
dnf install -y policycoreutils-python-utils
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/uploads(/.*)?"
restorecon -Rv /var/www/siteУстановка веб-сервера: Веб-сервер с HTTPS: nginx или Apache и Let's Encrypt.
Долгие передачи: tmux или screen
Если копирование rsync с вашего компьютера оборвалось, запустите ту же команду с -P ещё раз: rsync продолжит с того места, где остановился. Когда вы копируете между двумя серверами (например, со старого хостинга на новый сервер), запускайте копирование на сервере внутри сеанса tmux: если SSH-соединение оборвётся, копирование продолжится.
Установите tmux, если его нет. Ubuntu и Debian:
apt update
apt install -y tmuxAlmaLinux и CentOS Stream (в стандартных репозиториях этих систем пакета screen нет):
dnf install -y tmux| Действие | tmux | screen |
|---|---|---|
| начать сеанс | tmux new -s transfer |
screen -S transfer |
| выйти, не останавливая его | Ctrl + B, затем D | Ctrl + A, затем D |
| вернуться после переподключения | tmux attach -t transfer |
screen -r transfer |
Пример: команда ниже, запущенная в сеансе на новом сервере, забирает сайт со старого сервера. Будет запрошен пароль root старого сервера; если туда вы входите по ключу, следуйте руководству по переносу ниже.
rsync -avzP root@IP_СТАРОГО_СЕРВЕРА:/var/www/site/ /var/www/site/Полный перенос: Перенос сайта на сервер BLACKBOX.
Почему SFTP, а не FTP
- На VPS, для которых вы выбираете операционную систему при заказе, FTP-сервер не установлен. SFTP работает сразу — через SSH, с учётными данными root.
- FTP передаёт пароль и файлы в открытом виде, SFTP их шифрует. Не путайте SFTP с FTPS («FTP over TLS»): для FTPS нужен FTP-сервер.
- Сетевая фильтрация, которой управляет BLACKBOX, по умолчанию пропускает только SSH (22), HTTP (80), HTTPS (443) и ping. Порты FTP-сервера, установленного вами, без запроса в поддержку будут недоступны из интернета: Файрвол: сетевая фильтрация и ufw/firewalld на сервере.
- На тарифах «VPS hosting» уточните в поддержке, есть ли FTP в панели управления на сервере: Тарифы «VPS hosting» с панелью управления.
Частые ошибки
| Сообщение | Вероятная причина | Что делать |
|---|---|---|
Permission denied (publickey) или No supported authentication methods available (server sent: publickey) |
сервер «Только ключ», а ключ не настроен в клиенте или не установлен на сервере | укажите ключ (-i, «Key file», «Private key file») или добавьте его кнопкой «Добавить SSH-ключ» |
Permission denied, please try again. (FileZilla: Authentication failed.) |
неверный пароль | скопируйте пароль через «Показать учётные данные»: Просмотр учётных данных root |
FileZilla: Could not connect to server, в журнале порт 21 |
выбран протокол FTP | выберите «SFTP - SSH File Transfer Protocol» и порт 22 |
rsync: command not found |
rsync не установлен на сервере или на компьютере |
установите его |
No space left on device |
диск сервера заполнен | Диск сервера заполнен |
No such file or directory при загрузке |
папки назначения нет на сервере | создайте её, как в разделе о scp |
после загрузки сайт отвечает 403 Forbidden |
неверный владелец, права доступа или метки SELinux | см. раздел о владельце и правах доступа |
Другие проблемы с подключением: Не удаётся подключиться по SSH.
Частые вопросы
Куда загружать файлы сайта?
В папку, указанную в настройках веб-сервера (директива root у nginx, DocumentRoot у Apache), — обычно где-то в /var/www/.
Много мелких файлов копируются очень долго. Что делать?
Упакуйте папку в архив на компьютере, скопируйте его в /root/ через scp и распакуйте на сервере. Сначала на компьютере, затем на сервере:
tar czf site.tar.gz sitetar xzf /root/site.tar.gz -C /var/www/Как скачать свои данные перед удалением сервера?
С помощью rsync или scp -r в обратную сторону — с сервера на компьютер, для каждой важной папки. Базы данных сначала выгрузите в файл (дамп). Что стоит сохранить: Стратегия резервного копирования для вашего сервера.