Как исключить файлы из rsync

Быстрые ссылки
Исключение из списка в файле
Исключение одного элемента
Что такое rsync
Rsync — утилита для эффективной синхронизации файлов и директорий между локальной и удалённой машинами. Ключевое поведение: по умолчанию rsync пытается синхронизировать всё, что находится в исходной директории.
Исключение из списка в файле
Лучший способ управлять исключениями — собрать все шаблоны в один файл. Такой подход упрощает поддержку и расширение правил.
Синтаксис примера:
rsync --exclude-from=/path/to/exclusion-file /path/to/source /path/to/destВажно: шаблоны исключений должны быть относительными к исходной папке, которую вы передаёте rsync. Если вы запускаете команду из/для /data/web/ (или указываете её как источник), rsync сравнивает только относительную часть путей при проверке исключений — например “cache/“ или “cache*”, а не полный путь “/data/web/cache/“.
Пример: у нас есть локальная команда, которая копирует /data/web/ в /backups/:
rsync -a --exclude-from=/data/exclusions /data/web/ /backups/Содержимое файла /data/exclusions, чтобы исключить папки cache и temp и все .txt-файлы:
cache*
temp*
*.txtПояснения:
- “cache*” — исключит любые элементы, начинающиеся с “cache” в корне синхронизируемой директории и её подпапках (в зависимости от шаблона и опций).
- “*.txt” — исключит все файлы с расширением .txt.
Важно: проверяйте результат сначала с опцией –dry-run (или -n), чтобы убедиться, что исключения срабатывают так, как вы ожидаете.
rsync -avn --exclude-from=/data/exclusions /data/web/ /backups/Исключение одного элемента
Можно задать исключение прямо в командной строке, если нужно временно пропустить конкретный путь:
rsync --exclude=relative/path/to/exclusion /source /destПример (относительный путь):
rsync -a --exclude=cache/ /data/web/ /backups/Совет: для скриптов регулярно используйте файл исключений — так легче управлять операцией в будущем.
Когда исключения могут не сработать
- Точность пути и завершающий слэш: rsync по-разному трактует исходный путь с и без завершающего слэша (/dir/ vs /dir). Это влияет на то, какие относительные пути будут проверяться.
- Кавычки и экранирование при удалённом запуске: при передаче команд через SSH следите за правильным экранированием символов и шаблонов.
- Порядок include/exclude: если вы используете одновременно include и exclude или сложные фильтры, порядок правил имеет значение.
Важно: всегда выполняйте тест (–dry-run) на небольшом наборе данных перед массовым выполнением в продакшне.
Альтернативные подходы
- –filter: более гибкий способ, который позволяет комбинировать include/ exclude правила и даже использовать директивы слияния для нескольких файлов правил.
- Встраиваемые правила на стороне rsync-сервера (rsyncd) — подходят для централизованного управления крупными инфраструктурами.
- Предварительная подготовка: генерировать список файлов, которые нужно синхронизировать, скриптом на стороне источника и передавать его через –files-from.
Мини‑методология для безопасного применения исключений
- Подготовьте файл исключений с читаемыми комментариями.
- Выполните
rsync -avnдля проверки, где n = –dry-run. - Проанализируйте вывод и скорректируйте шаблоны.
- Запустите синхронизацию без –dry-run.
- Добавьте проверку целостности (например, контрольные суммы) при критичных данных.
Чек‑лист для разных ролей
Администратор:
- Подготовить и проверить файл исключений.
- Выполнить тестовую синхронизацию (–dry-run).
- Запланировать периодическое ревью файла исключений.
Разработчик:
- Добавлять временные файлы приложения в локальный exclude-файл.
- Документировать причины исключений в репозитории.
DevOps/CI:
- Интегрировать проверку exclude-файла в CI (например, запускать тестовый rsync перед деплоем).
- Хранить файл исключений как часть конфигурации инфраструктуры.
Шпаргалка (cheat sheet)
- Проверка без изменений: rsync -avn src/ dest/
- Использовать файл исключений: rsync -a –exclude-from=/path/exclude.txt src/ dest/
- Одноразовое исключение: rsync -a –exclude=cache/ src/ dest/
- Исключить по маске: добавить в exclude.txt строку “.log” или “temp“
Краткая терминология
- rsync — инструмент синхронизации файлов.
- exclude — правило, запрещающее копирование совпадающих путей/шаблонов.
- include — правило, принудительно включающее совпадающие элементы.
- relative path — путь, сравниваемый относительно исходной директории.
Примеры ошибок и способы их обнаружения
- Проблема: исключение не срабатывает — причина часто в неверном относительном пути или в отсутствии завершающего слэша в исходном пути. Решение: проверьте путь и запустите –dry-run.
- Проблема: удалённые шаблоны не интерпретируются — проверьте, не экранируются ли символы оболочкой и правильно ли указаны кавычки.
Краткое резюме
- Используйте –exclude-from для долговременного управления исключениями.
- Для простых случаев подойдет –exclude в командной строке.
- Всегда тестируйте с –dry-run и документируйте правила в файле исключений.
Часто задаваемые вопросы
Нужно ли указывать полный путь в файле исключений?
Нет. Шаблоны в файле исключений обычно указываются относительно исходной директории, переданной rsync.
Как протестировать, что правило действительно исключает файлы?
Запустите rsync с опцией –dry-run (-n) и ключом -v для подробного вывода: rsync -avn –exclude-from=/path/exclude.txt src/ dest/
Можно ли комбинировать include и exclude?
Да. Для сложных сценариев используйте –filter или сочетание include/exclude, но следите за порядком правил.
Похожие материалы
Музыка для концентрации: Apple Music и плейлисты
Заказ еды через Google Pay — руководство
Как удалить историю поиска в YouTube
Какой iPhone купить в 2024
Высокая температура CPU в Windows 10 — что делать