scp и rsync: копирование файлов
Две команды для переноса файлов между компьютером и машиной: когда хватает scp, чем полезен rsync и как не затереть чужой каталог косой чертой.
Обновлено 23 августа 2026 г.
Графический клиент удобен для разовой правки, но выкладку и резервные копии проще делать одной командой.
scp: разовое копирование
Синтаксис — как у cp, только с адресом машины:
scp dump.sql root@203.0.113.10:/root/
scp root@203.0.113.10:/var/log/nginx/error.log ./
scp -r ./site root@203.0.113.10:/var/www/
Первая команда отправляет файл, вторая забирает, третья копирует каталог целиком (-r).
Если SSH висит на другом порту, укажите его заглавной -P:
scp -P 2222 dump.sql root@203.0.113.10:/root/
С файлом ~/.ssh/config команды короче: scp dump.sql vds:/root/.
rsync: синхронизация
rsync передаёт только различия, умеет продолжать прерванную передачу и показывать прогресс. Для повторных выкладок он быстрее в разы.
rsync -avz --progress ./site/ root@203.0.113.10:/var/www/example.com/
| Ключ | Что делает |
|---|---|
-a | Сохраняет права, время, ссылки |
-v | Печатает список файлов |
-z | Сжимает поток |
--progress | Показывает ход передачи |
--delete | Удаляет на машине то, чего нет у вас |
--exclude | Пропускает лишнее |
Пример выкладки без мусора:
rsync -avz --delete \
--exclude '.git' --exclude 'node_modules' --exclude '.env' \
./site/ vds:/var/www/example.com/
Забрать копию с машины к себе:
rsync -avz vds:/root/backup-2026-08-23.tar.gz ./backups/
Косая черта в конце источника значит «содержимое каталога».
./site/кладёт файлы внутрь цели,./site— создаёт внутри цели подкаталогsite. Половина «пропавших» выкладок — это она.
Осторожно с --delete
Ключ --delete делает каталог на машине точной копией вашего: всё лишнее удаляется без вопросов. Сначала прогон вхолостую:
rsync -avzn --delete ./site/ vds:/var/www/example.com/
Ключ -n только показывает, что произошло бы. Убедились — убирайте n.
Скорость
Диск ограничен полкой по ступени: запись 60 МБ/с на ядро (не ниже 60 и не выше 400), чтение вдвое выше, всплеск втрое выше полки держится 30 секунд. Полоса сети — до 500 Мбит/с. На VDS-1 заливка большого архива упрётся в запись, и это ожидаемо, а не поломка. Проверить, что происходит:
df -h
iostat -x 2
Частые ошибки
| Симптом | Причина |
|---|---|
Permission denied | Пишете в каталог не своего пользователя — заходите под root или меняйте владельца |
No such file or directory | Каталога на машине нет, scp его не создаёт: mkdir -p заранее |
| Файлы легли на уровень выше | Забыта или лишняя косая черта в конце пути |
rsync: command not found | Установите пакет на обеих сторонах: apt install -y rsync |
| Сайт после выкладки отдаёт 403 | Не выставлен владелец: chown -R www-data:www-data /var/www/example.com |
Если привычнее графический клиент — см. передачу файлов по SFTP.