linux-labs

Вики / Базовые команды

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/   # снапшот-бэкап
# помни про хвостовой / у источника

См. также