Вики / Базовые команды
rsync (синхронизация)
Эффективное копирование и бэкап — только изменения, по сети и локально.
rsync копирует, передавая только различия — быстро для повторных синхронизаций
и больших деревьев. Работает локально и по SSH.
rsync -avz src/ dst/ # архив + сжатие, только изменения
Флаг -a (archive) = рекурсия + сохранение прав/времени/симлинков/владельцев.
rsync -av src/ dst/ # СОДЕРЖИМОЕ src → в dst (dst/file)
rsync -av src dst/ # сам каталог src → в dst (dst/src/file)
Слэш у источника = «содержимое». Без слэша = «сам каталог». Частый источник ошибок.
| Ключ | Значение |
|---|---|
-a |
архив (rlptgoD): рекурсия+права+время+симлинки+владельцы |
-v / -h |
подробно / человеко-размеры |
-z |
сжатие при передаче по сети |
-P |
--partial --progress (докачка + прогресс) |
-n |
dry-run (показать без изменений!) |
--delete |
удалять в dst то, чего нет в src (зеркало) |
--exclude=PAT |
исключить |
-e 'ssh -p N' |
транспорт/порт SSH |
--bwlimit=N |
ограничить скорость (КБ/с) |
--link-dest=DIR |
хардлинки на неизменённое (снапшот-бэкапы) |
-c |
сверять по контрольной сумме, а не по mtime/размеру |
rsync -avzP dir/ user@host:/backup/ # на удалённый по SSH с прогрессом
rsync -avz user@host:/data/ ./local/ # с удалённого
rsync -avzn --delete src/ dst/ # СНАЧАЛА dry-run зеркала
rsync -avz --delete src/ dst/ # зеркалирование (удалит лишнее в dst!)
rsync -avz --exclude='*.tmp' --exclude='cache/' src/ dst/
rsync -avz -e 'ssh -p 2222' src/ host:/ # нестандартный SSH-порт
rsync -avz --bwlimit=5000 big/ host:/ # не забивать канал (5 МБ/с)
# инкрементальные снапшоты (неизменённое — хардлинки на вчера):
rsync -av --delete --link-dest=/bak/2026-06-29 src/ /bak/2026-06-30/
--delete снёс нужное
--delete делает dst точной копией src. Всегда сперва -n (dry-run) и проверь
список. Подстраховка: --backup --backup-dir=.
Скопировалось не туда / задвоился каталог
Хвостовой слэш у источника (см. вкладку про слэш).
Каждый раз копирует всё заново
Сравнение по mtime+размеру; если время «плавает» (разные ФС/часовые пояса) —
добавь -c (по контрольной сумме) или --modify-window=1.
Права/владельцы не сохранились
Нужен -a (или -o/-g/-p по отдельности); для чужих владельцев — права root на
приёмнике. На FAT/NTFS владельцы не сохранятся.
Долго на множестве мелких файлов
Нормально (rsync сверяет каждый). -z помогает по сети; для разового архива в один
файл быстрее tar.
rsync -avzP src/ dst/ # синхронизировать (только изменения, прогресс)
rsync -avzP src/ user@host:/dst/ # по SSH
rsync -avzn --delete src/ dst/ # СНАЧАЛА dry-run зеркала
rsync -avz --exclude='cache/' src/ dst/
rsync -av --link-dest=/bak/prev src/ /bak/today/ # снапшот-бэкап
# помни про хвостовой / у источника
См. также
- Базовые команды с файлами — Базовые команды
- tar (архивы) — Базовые команды
- SSH-клиент (ssh, scp, туннели) — Сеть