Перенос файлов сайта: rsync, SCP и FTP — что выбрать

Миграция · 19.04.2026
Перенос файлов сайта: rsync, SCP и FTP — что выбрать

При миграции сайта нужно перенести тысячи файлов между серверами. Выбор инструмента влияет на скорость, безопасность и удобство — особенно при повторных синхронизациях.

Сравнение инструментов переноса

ИнструментСкоростьБезопасностьИнкрементальностьТребования
rsyncВысокаяВысокая (SSH)Да (только изменения)SSH на обоих серверах
SCPСредняяВысокая (SSH)НетSSH на обоих серверах
FTP/SFTPСредняяНизкая/ВысокаяНетFTP-клиент
tar + SSH pipeВысокаяВысокаяНетtar, SSH

rsync — лучший выбор для миграции

rsync передаёт только изменённые блоки файлов, что делает его незаменимым для финальной синхронизации перед переключением DNS:

# Синхронизировать директорию с удалённым сервером
rsync -avz --progress   /var/www/example.com/   root@new-server:/var/www/example.com/

# Ключи:
# -a  — архивный режим (сохраняет права, время, симлинки)
# -v  — подробный вывод
# -z  — сжатие при передаче
# --progress — показать прогресс

# Исключить ненужные директории
rsync -avz --exclude=".git" --exclude="node_modules"   /var/www/example.com/ root@new-server:/var/www/example.com/

# Удалить на цели файлы, которых нет в источнике
rsync -avz --delete   /var/www/example.com/ root@new-server:/var/www/example.com/

SCP — быстрый перенос архивов

# Скопировать файл на удалённый сервер
scp backup.tar.gz root@new-server:/tmp/

# Скопировать директорию рекурсивно
scp -r /var/www/example.com root@new-server:/var/www/

# Скопировать с удалённого сервера локально
scp root@old-server:/var/www/example.com/config.php ./

# Использовать нестандартный SSH-порт
scp -P 2222 backup.tar.gz root@new-server:/tmp/

tar + SSH pipe — перенос без промежуточных файлов

# Передать директорию напрямую без создания архива на диске
tar -czf - /var/www/example.com/ |   ssh root@new-server "tar -xzf - -C /var/www/"

# Это быстрее чем: создать архив → scp → распаковать

SFTP (безопасный FTP) через lftp

# Параллельная загрузка через lftp (5 соединений)
lftp -u username,password sftp://new-server <<'EOF'
mirror -P5 /var/www/example.com /var/www/example.com
quit
EOF
Стратегия двухэтапного переноса:
  1. День 1: Первичная синхронизация rsync (все файлы, медленно)
  2. День миграции: Финальный rsync --delete (только изменения, быстро — 1–5 минут)
  3. Переключить DNS
Это минимизирует расхождение между старым и новым сервером.

SSH-ключи для автоматизации

# Создать ключевую пару (без пароля для автоматизации)
ssh-keygen -t ed25519 -C "migration-key" -f ~/.ssh/migration_key -N ""

# Добавить публичный ключ на новый сервер
ssh-copy-id -i ~/.ssh/migration_key.pub root@new-server

# Использовать конкретный ключ в rsync
rsync -avz -e "ssh -i ~/.ssh/migration_key"   /var/www/example.com/ root@new-server:/var/www/example.com/
FTP (без шифрования) небезопасен для передачи файлов через интернет — пароли и данные передаются в открытом виде. Используйте только SFTP, SCP или rsync через SSH.
← Назад в базу знаний Задать вопрос поддержке