Команда rsync: как скопировать папку на сервер и передавать только изменения
rsync копирует файлы по SSH, как scp, но при повторном запуске передаёт только то, что изменилось. Им удобно выкладывать сайт и делать копии папок. Главное, что надо знать, — как работает слеш в конце пути: ниже это показано на примерах.
Содержание 8
Что сделать прямо сейчас
- Откройте терминал на своём компьютере — Как открыть терминал. rsync есть на Mac и в Linux; в Windows его нет, там пользуйтесь Команда scp.
- Проверьте, что получится, ничего не копируя:
rsync -avzn site/ ivan@ВАШ_IP:/home/ivan/site/. Ключn— пробный запуск. - Посмотрите список файлов в ответе. Если всё верно, запустите то же без
n:rsync -avz site/ ivan@ВАШ_IP:/home/ivan/site/. - Поменяйте что-нибудь в папке и запустите команду ещё раз — 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 значит, что часть файлов удалили, пока шло копирование, — например, старые журналы при ротации. Остальные файлы скопированы.
Источники
- Справка rsync для Ubuntu 24.04 — слеш в конце источника, ключи -a, -v, -z, -h, -P, -n, -e, --delete, --exclude, --info=progress2 и коды выхода.
Сверено 11 октября 2026 года.
Что почитать дальше
- Команда scpскопировать один файл быстрее.
- Резервные копии сайтакак делать резервные копии.
- Как подключиться к VPS по SSHвход, ключи и файл config.
- Команды Linux для новичкашпаргалка по командам.
Проверено и обновлено: 11.10.2026