Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

Linux / DevOps

Как передавать файлы и дампы баз данных по SSH: команды SCP и RSYNC для новичков

Обновлено: 27.08.2026 · Официальная документация ↗

Проблема передачи больших файлов между серверами

Когда необходимо перенести тяжелый дамп базы данных (SQL), архив сайта (TAR.GZ) или тысячи картинок с одного сервера на другой, использование графических клиентов вроде FileZilla через промежуточный домашний ПК отнимает часы времени и нагружает домашний интернет-канал.

  • Необходимость прямого защищенного копирования между двумя серверами на скорости дата-центра (100–1000 Мбит/с).
  • Случайный обрыв связи при передаче файла размером 50 ГБ через стандартный FTP требует начинать скачивание с самого начала.
  • Необходимость сохранить оригинальные права доступа, владельцев и дату создания файлов.

Два главных инструмента: SCP и RSYNC

  1. 1. Команда SCP (Secure Copy) — простая и быстрая передача:

    SCP копирует файл через зашифрованный SSH-туннель. Синтаксис: scp откуда куда.

    # Скачать файл с сервера на свой локальный компьютер:
    scp user@192.168.1.100:/var/backups/db.sql.gz ~/Downloads/
    
    # Загрузить файл с компьютера на сервер на нестандартный SSH-порт 2222 (флаг -P с большой буквы!):
    scp -P 2222 ./archive.tar.gz root@192.168.1.100:/var/www/
  2. 2. Команда RSYNC — профессиональный стандарт с докачкой:

    Утилита rsync проверяет различия между файлами и передает только изменившиеся части, поддерживая докачку после обрыва связи.

    # Синхронизация папки с сервером с отображением прогресса:
    rsync -avzP /var/www/site/ user@remote-server:/var/www/site/

    Разбор флагов rsync (-avzP):

    • -a (archive) — сохраняет права, группы, симлинки и даты файлов.
    • -v (verbose) — детальный вывод процесса.
    • -z (compress) — сжатие данных «на лету» для экономии трафика.
    • -P (progress + partial) — отображение шкалы прогресса и сохранение недокачанного файла при обрыве связи.

    Пример копирования через rsync на нестандартный SSH порт (например, 2222):

    rsync -avzP -e "ssh -p 2222" /local/backup.sql root@192.168.1.100:/remote/backups/

Обратите внимание на слэш в конце папки: Команда rsync -a /folder/ /backup/ скопирует содержимое папки. Команда rsync -a /folder /backup/ создаст внутри вложенную папку /backup/folder/.

💡 Практика специалистов: При ночном переносе терабайтных дампов баз данных мы всегда запускаем rsync внутри виртуального терминала tmux или screen. Если интернет-соединение на компьютере администратора прервется, передача на сервере продолжит работать в штатном режиме.

Частые вопросы (FAQ)

Что лучше использовать: scp или rsync?

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

Как ограничить скорость передачи, чтобы не забить интернет-канал офиса?

В rsync используйте флаг --bwlimit=КБАЙТ_В_СЕК (например, --bwlimit=5000 ограничит скорость до 5 МБ/с).

Как передать файлы по rsync без ввода пароля?

Настройте авторизацию по SSH-ключам между серверами с помощью команды ssh-copy-id user@remote-host.

Удалит ли rsync лишние файлы в целевой папке?

По умолчанию нет. Если вам нужна точная зеркальная копия, добавьте флаг --delete (удалит в папке назначения те файлы, которых уже нет в источнике).

Полезные материалы
Рекомендуем