Что такое rsync
rsync — утилита для эффективной синхронизации файлов между серверами. Передаёт только изменившиеся части файлов, что делает её идеальной для инкрементальных бэкапов.
💡 rsync передаёт только дельту (изменения) между файлами, а не весь файл целиком — это экономит трафик на 90% при бэкапах больших сайтов.
Основные ключи rsync
| Ключ | Описание |
|---|---|
| -a | Архивный режим (рекурсия + права + метаданные) |
| -v | Verbose — подробный вывод |
| -z | Сжатие при передаче |
| --delete | Удалять файлы на приёмнике, которых нет на источнике |
| --exclude | Исключить файлы/папки |
| --dry-run | Тестовый прогон без реальных изменений |
| --link-dest | Жёсткие ссылки для инкрементальных бэкапов |
Базовая синхронизация между серверами
# Синхронизация папки на удалённый сервер
rsync -avz --delete /var/www/mysite/ user@backup-server:/backups/mysite/
# С исключениями
rsync -avz --delete --exclude='wp-content/cache/' --exclude='*.log' /var/www/mysite/ user@backup-server:/backups/mysite/
Инкрементальные бэкапы с --link-dest
#!/bin/bash
DATE=$(date +%Y-%m-%d_%H%M)
DEST=/backups/mysite
LATEST=$DEST/latest
rsync -avz --delete --link-dest=$LATEST /var/www/mysite/ $DEST/$DATE/
# Обновляем ссылку на последний бэкап
rm -f $LATEST
ln -s $DEST/$DATE $LATEST
⚠️
--delete удаляет файлы на приёмнике без предупреждения. Всегда используйте --dry-run первый раз.