Перейти к содержимому
VDS · Доступ к машине

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.