Быстро и с прогрессом
Когда копируешь проект на сервер, scp часто делает тупую заливку всего подряд. rsync копирует только изменения, умеет докачивать и показывает прогресс. Самый базовый рабочий вариант для папки.
rsync -avh --info=progress2 ./project/ user@server:/opt/project/
Исключения и чистая синхронизация
Часто не нужно тащить node_modules, .git, кеши и сборки. Это проще делать через --exclude. А если хочешь, чтобы на сервере стало ровно как локально, добавляешь --delete, тогда удалятся файлы, которых уже нет у тебя.
rsync -avh --info=progress2 \
--exclude '.git' --exclude 'node_modules' --exclude 'dist' \
--delete \
./project/ user@ip:/opt/project/
Быстрее на больших деревьях
Если файлов очень много, ускоряет сжатие и правильный SSH. Часто достаточно включить компрессию и указать быстрый шифр, если у тебя закрытая сеть и упор в CPU.
rsync -avh --info=progress2 -z \
-e "ssh -T -c aes128-gcm@openssh.com" \
./project/ user@ip:/opt/project/
Вывод
rsync по SSH это рабочий инструмент для деплоя и миграций, где важны скорость, контроль и предсказуемость.
LinuxCamp | #utils
