Справочник

Команда rsync: как скопировать папку на сервер и передавать только изменения

rsync копирует файлы по SSH, как scp, но при повторном запуске передаёт только то, что изменилось. Им удобно выкладывать сайт и делать копии папок. Главное, что надо знать, — как работает слеш в конце пути: ниже это показано на примерах.

Обновлено 11.10.2026≈ 5 мин чтения
Содержание 8

Что сделать прямо сейчас

  1. Откройте терминал на своём компьютере — Как открыть терминал. rsync есть на Mac и в Linux; в Windows его нет, там пользуйтесь Команда scp.
  2. Проверьте, что получится, ничего не копируя: rsync -avzn site/ ivan@ВАШ_IP:/home/ivan/site/. Ключ n — пробный запуск.
  3. Посмотрите список файлов в ответе. Если всё верно, запустите то же без n: rsync -avz site/ ivan@ВАШ_IP:/home/ivan/site/.
  4. Поменяйте что-нибудь в папке и запустите команду ещё раз — rsync передаст только изменённые файлы.

rsync должен быть установлен и на вашем компьютере, и на сервере. Если на сервере его нет, подключитесь к нему и установите: sudo apt install rsync.

Слеш в конце пути

Здесь rsync отличается от cp и scp. Слеш в конце папки-источника значит «скопировать то, что внутри», без слеша — «скопировать саму папку».

КомандаЧто окажется на сервере
rsync -a site/ ivan@ВАШ_IP:/home/ivan/site/файлы из site прямо в /home/ivan/site/
rsync -a site ivan@ВАШ_IP:/home/ivan/site/папка /home/ivan/site/site/ с файлами внутри
rsync -a site ivan@ВАШ_IP:/home/ivan/папка /home/ivan/site/ с файлами

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

Как устроена команда

rsync -avz site/ ivan@ВАШ_IP:/home/ivan/site/
ЧастьЧто значит
-aкопировать папки целиком и сохранить права, время изменения и ссылки
-vписать, какие файлы передаются
-zсжимать данные при передаче
site/откуда: содержимое папки site на вашем компьютере
ivan@ВАШ_IP:/home/ivan/site/куда: пользователь, адрес сервера, двоеточие и путь на сервере

Вместо ivan — ваш пользователь на сервере, вместо ВАШ_IP — адрес сервера из панели провайдера. Скачать с сервера — та же команда, только сервер пишут первым: rsync -avz ivan@ВАШ_IP:/home/ivan/backup/ backup/.

Ключи rsync

КлючЧто делает
-aрежим архива: папки целиком, права, время, ссылки
-vсписок переданных файлов
-zсжатие при передаче
-hразмеры в понятных единицах
-n или --dry-runпробный запуск: показать, что будет сделано, и ничего не менять
-Pпоказывать ход передачи и не удалять недокачанный файл: повторный запуск докачает его быстрее
--info=progress2общий процент по всей передаче, а не по каждому файлу
--exclude='*.log'не копировать файлы, подходящие под шаблон
--deleteудалить на стороне назначения файлы, которых нет в источнике
-e 'ssh -p 2222'подключаться к SSH на порту 2222

На Mac встроенный rsync ключ --info=progress2 не понимает — там используйте -P.

Если вы завели файл config для SSH, вместо ivan@ВАШ_IP можно писать короткое имя из него, а порт указывать не нужно — ssh возьмёт его из config. Как его завести — в инструкции по SSH, раздел «Короткое имя вместо IP: файл config».

Ключ --delete: только после пробного запуска

С --delete rsync делает папку назначения точной копией источника: файлы, которых нет в источнике, на сервере будут удалены. Ошибка в пути или пропущенный слеш могут стереть нужное. Поэтому сначала запускайте с -n и смотрите строки со словом deleting — это файлы, которые rsync собирается удалить:

rsync -avzn --delete site/ ivan@ВАШ_IP:/home/ivan/site/

Если в списке удаления нет ничего лишнего, запустите ту же команду без n.

Копия папки на самом сервере

rsync работает и без сети — между двумя папками на одном компьютере. Например, копия папки сайта перед правками:

sudo rsync -a /var/www/example.com/ /home/ivan/site-copy/

Повторный запуск обновит копию, передав только изменения. Как хранить копии и сколько их держать — в статье Резервные копии сайта.

Ошибки и как их исправить

ОтветЧто значитЧто сделать
в ответе есть rsync: command not foundна сервере нет rsyncна сервере: sudo apt install rsync
в ответе есть Permission denied и путь на серверенет прав писать в эту папкукопируйте в домашнюю папку и переносите через sudo mv — как
файлы оказались в папке site/siteу источника не было слеша в концеслеш в конце пути
Permission denied (publickey)сервер не принял ключразбор ошибки
Connection refusedна этом порту SSH не отвечаетпроверьте порт в -e — разбор

Коды выхода rsync

КодЧто значит
0всё скопировано
1ошибка в команде, например неверный ключ
12сбой обмена данными между rsync на двух машинах — смотрите строки выше
20передачу прервали, например клавишами Ctrl+C
23часть файлов не передана из-за ошибки — смотрите строки выше
24часть файлов исчезла, пока шло копирование

Код последней команды покажет echo $?. Для заданий cron это важно: код 24 значит, что часть файлов удалили, пока шло копирование, — например, старые журналы при ротации. Остальные файлы скопированы.

Источники

Сверено 11 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 11.10.2026