Перейти к основному содержимому
Вернуться в категорию

Передача файлов на сервер: руководство по SCP, SFTP и rsync

Полное руководство по синтаксису SCP, интерактивному режиму SFTP, rsync для синхронизации и резервного копирования, WinSCP и FileZilla для пользователей Windows.

Время чтения: 11 мин Управление сервером
scpsftprsyncпередача файловwinscpfilezillasshlinux

Содержание

Передача файлов на сервер: руководство по SCP, SFTP и rsync

Существует несколько безопасных методов передачи файлов на Linux-сервер. SCP (Secure Copy Protocol), SFTP (SSH File Transfer Protocol) и rsync используют инфраструктуру SSH для зашифрованной передачи файлов. В этом руководстве рассматриваются все три инструмента и графические альтернативы для пользователей Windows.

Передача файлов с помощью SCP

SCP — простой и быстрый инструмент для копирования файлов через SSH.

Базовый синтаксис SCP

hljs bash
# Копировать локальный файл на сервер
scp /local/file.txt user@server-ip:/remote/directory/

# Копировать с сервера на локальный компьютер
scp user@server-ip:/remote/file.txt /local/directory/

# Копировать директорию (-r рекурсивно)
scp -r /local/directory/ user@server-ip:/remote/directory/

# Нестандартный порт (-P заглавная)
scp -P 2222 file.txt user@server-ip:/destination/

# С файлом SSH-ключа
scp -i ~/.ssh/id_rsa file.txt user@server-ip:/destination/

# Копирование между двумя удалёнными серверами
scp user1@server1:/file.txt user2@server2:/destination/

Параметры SCP

hljs bash
# Передача со сжатием (-C)
scp -C large-file.tar.gz user@server-ip:/destination/

# Показать прогресс (-v подробный вывод)
scp -v file.txt user@server-ip:/destination/

# Ограничить пропускную способность (КБ/с)
scp -l 1024 file.txt user@server-ip:/destination/

# Несколько файлов
scp file1.txt file2.txt user@server-ip:/destination/

# С маской
scp *.log user@server-ip:/var/log/backup/

SCP идеален для простого копирования файлов. Для синхронизации больших директорий или резервного копирования rsync эффективнее.

Передача файлов с помощью SFTP

SFTP — полнофункциональный протокол передачи файлов через SSH. Это безопасная альтернатива FTP.

Подключение SFTP

hljs bash
# Начать сессию SFTP
sftp user@server-ip

# С нестандартным портом
sftp -P 2222 user@server-ip

# С SSH-ключом
sftp -i ~/.ssh/id_rsa user@server-ip

Интерактивные команды SFTP

hljs bash
# Список удалённой директории
ls
ls -la

# Сменить удалённую директорию
cd /var/www/html

# Сменить локальную директорию
lcd ~/Downloads

# Загрузить файл (локальный → удалённый)
put file.txt
put -r /local/directory/ /remote/directory/

# Скачать файл (удалённый → локальный)
get file.txt
get -r /remote/directory/ /local/directory/

# Создать удалённую директорию
mkdir new-directory

# Удалить удалённый файл
rm file.txt

# Переименовать удалённый файл
rename old-name.txt new-name.txt

# Закрыть сессию SFTP
exit

Пакетные операции SFTP

hljs bash
# SFTP в пакетном режиме
sftp -b - user@server-ip << 'EOF'
cd /var/www/html
put index.html
put style.css
EOF

Синхронизация и резервное копирование с rsync

rsync — мощный инструмент для эффективной синхронизации файлов и директорий. Передаёт только изменённые файлы.

Базовый синтаксис rsync

hljs bash
# Синхронизировать локальную директорию с сервером
rsync -avz /local/directory/ user@server-ip:/remote/directory/

# Синхронизировать с сервера на локальный компьютер
rsync -avz user@server-ip:/remote/directory/ /local/directory/

# С нестандартным SSH-портом
rsync -avz -e "ssh -p 2222" /local/ user@server-ip:/remote/

# С SSH-ключом
rsync -avz -e "ssh -i ~/.ssh/id_rsa" /local/ user@server-ip:/remote/

Параметры rsync

hljs bash
# Полная команда резервного копирования
rsync -avzh --progress /var/www/ user@server-ip:/backup/www/

# Синхронизация с удалением
rsync -avz --delete /local/ user@server-ip:/remote/

# Сначала симуляция
rsync -avz --dry-run /local/ user@server-ip:/remote/

# Исключить определённые файлы
rsync -avz --exclude='*.log' --exclude='.git' /local/ user@server-ip:/remote/

# Ограничить пропускную способность (КБ/с)
rsync -avz --bwlimit=1024 /local/ user@server-ip:/remote/

Автоматическое резервное копирование с rsync

hljs bash
# Ежедневное резервное копирование с cron
crontab -e

# Резервное копирование каждую ночь в 02:00
0 2 * * * rsync -avz --delete /var/www/ user@backup-server:/backup/www/ >> /var/log/rsync-backup.log 2>&1

# Резервное копирование с датой
rsync -avz /var/www/ user@server-ip:/backup/www-$(date +%Y%m%d)/

Самая мощная функция rsync — алгоритм дельта-передачи: передаются только изменённые блоки. Если изменилась небольшая часть большого файла, rsync отправляет только эту изменённую часть, экономя значительную пропускную способность.

Графические интерфейсы для пользователей Windows

WinSCP

WinSCP — самый популярный SFTP/SCP-клиент для Windows.

Установка и подключение:

  1. Скачайте с winscp.net
  2. Создайте новую сессию:
    • Протокол файлов: SFTP
    • Адрес сервера: server-ip
    • Порт: 22
    • Имя пользователя и пароль
  3. Для SSH-ключа: Дополнительно → SSH → Аутентификация → Файл закрытого ключа

FileZilla

FileZilla — кроссплатформенный SFTP-клиент для Windows, macOS и Linux.

Настройка подключения:

  1. Скачайте с filezilla-project.org
  2. Менеджер сайтов → Новый сайт:
    • Протокол: SFTP - SSH File Transfer Protocol
    • Сервер: server-ip
    • Порт: 22
  3. Подключиться

SSH-конфигурация для удобных подключений

hljs bash
# Редактировать ~/.ssh/config
nano ~/.ssh/config
Host my-server
    HostName 203.0.113.50
    User ubuntu
    Port 22
    IdentityFile ~/.ssh/id_rsa
hljs bash
# Теперь подключайтесь с коротким псевдонимом
scp file.txt my-server:/destination/
sftp my-server
rsync -avz /local/ my-server:/remote/

Устранение неполадок

Соединение отклонено

hljs bash
# Проверить SSH-соединение
ssh -v user@server-ip

# Проверить порт
nmap -p 22 server-ip

# Проверить брандмауэр
sudo ufw status

Заключение

SCP, SFTP и rsync — незаменимые инструменты для безопасной передачи файлов на Linux-серверы. Используйте SCP для простого копирования, SFTP для интерактивного управления и rsync для синхронизации и резервного копирования. Пользователи Windows могут получить доступ к той же функциональности через графические интерфейсы WinSCP или FileZilla.