Как передавать файлы и дампы баз данных по SSH: команды SCP и RSYNC для новичков
Проблема передачи больших файлов между серверами
Когда необходимо перенести тяжелый дамп базы данных (SQL), архив сайта (TAR.GZ) или тысячи картинок с одного сервера на другой, использование графических клиентов вроде FileZilla через промежуточный домашний ПК отнимает часы времени и нагружает домашний интернет-канал.
- Необходимость прямого защищенного копирования между двумя серверами на скорости дата-центра (100–1000 Мбит/с).
- Случайный обрыв связи при передаче файла размером 50 ГБ через стандартный FTP требует начинать скачивание с самого начала.
- Необходимость сохранить оригинальные права доступа, владельцев и дату создания файлов.
Два главных инструмента: SCP и RSYNC
- 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. Команда 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/.
Частые вопросы (FAQ)
Что лучше использовать: scp или rsync?
Для быстрой передачи одного небольшого файла удобнее scp. Для больших архивов, баз данных и целых сайтов всегда используйте rsync благодаря поддержке докачки и оптимизации трафика.
Как ограничить скорость передачи, чтобы не забить интернет-канал офиса?
В rsync используйте флаг --bwlimit=КБАЙТ_В_СЕК (например, --bwlimit=5000 ограничит скорость до 5 МБ/с).
Как передать файлы по rsync без ввода пароля?
Настройте авторизацию по SSH-ключам между серверами с помощью команды ssh-copy-id user@remote-host.
Удалит ли rsync лишние файлы в целевой папке?
По умолчанию нет. Если вам нужна точная зеркальная копия, добавьте флаг --delete (удалит в папке назначения те файлы, которых уже нет в источнике).