Обзор
Функция исключения `rsync` имеет решающее значение в сложных сценариях синхронизации файлов. Исключая определенные файлы журналов, временные файлы, метаданные системы управления версиями (.git, .svn) и т. д. из синхронизации, вы можете сократить время передачи, сэкономить место на целевом устройстве и избежать копирования ненужных данных.
Основные возможности
Ключевые возможности функции исключения `rsync`.
- **Исключение на основе шаблонов**: Вы можете исключать файлы или пути на основе имен файлов или путей с использованием шаблонов подстановки (glob).
- **Исключение на основе списка файлов**: Вы можете управлять шаблонами для исключения, записывая их в отдельный файл.
- **Гибкое применение правил**: Вы можете определять сложные правила включения/исключения в сочетании с опцией `--include`.
- **Оптимизация производительности**: Уменьшает ненужную передачу файлов, повышая скорость синхронизации.
Основные опции
Ключевые опции, используемые в команде `rsync` для исключения файлов и каталогов.
Указание правил исключения
Другие полезные опции
Сгенерированная команда:
Комбинируйте команды.
Описание:
`rsync-exclude` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Практические примеры использования опций исключения `rsync`.
Исключить файлы с определенным расширением
rsync -av --exclude='*.log' --exclude='*.tmp' /path/to/source/ /path/to/destination/
Синхронизирует файлы из исходного каталога в целевой, исключая файлы с расширениями `.log` и `.tmp`.
Исключить определенный каталог
rsync -av --exclude='node_modules/' --exclude='.git/' /path/to/source/ /path/to/destination/
Синхронизирует файлы из исходного каталога, исключая каталоги `node_modules` и `.git`.
Использовать файл списка исключений
rsync -av --exclude-from=exclude_list.txt /path/to/source/ /path/to/destination/
Исключает элементы из синхронизации, используя шаблоны, определенные в файле `exclude_list.txt`. **Пример содержимого exclude_list.txt:** ``` *.bak /temp_files/ logs/ ```
Включить только определенные файлы, исключив остальные
rsync -av --include='*.conf' --exclude='*' /path/to/source/ /path/to/destination/
Исключает все файлы по умолчанию и включает только файлы с расширением `.conf` для синхронизации. Порядок опций `--include` и `--exclude` имеет значение.
Исключить определенные файлы при синхронизации с удаленным сервером
rsync -avz --exclude='.DS_Store' --exclude='cache/' /path/to/local/user@remote_host:/path/to/remote/
Синхронизирует содержимое локального каталога с удаленным сервером, исключая файлы `.DS_Store` и каталог `cache/`.
Советы и рекомендации
Советы и рекомендации по эффективному использованию опций исключения `rsync` и избежанию потенциальных проблем.
Понимание правил сопоставления шаблонов
Шаблоны исключения работают в соответствии с правилами фильтрации `rsync`.
- **Подстановочные знаки**: `*` соответствует любой последовательности символов, `?` соответствует одному символу. `**` соответствует через границы каталогов.
- **Пути**: Если шаблон начинается с `/`, он относителен к корневому каталогу источника. Если он заканчивается на `/`, он соответствует только каталогам.
- **Относительные пути**: Если шаблон не содержит `/`, он соответствует всем уровням каталогов. Например, `--exclude='temp'` исключит как `/path/to/source/temp`, так и `/path/to/source/subdir/temp`.
Важность порядка опций
Опции `--include` и `--exclude` обрабатываются в том порядке, в котором они появляются в командной строке. Поэтому, чтобы включить определенные файлы, исключив остальные, вы должны сначала использовать `--include`, а затем `--exclude='*'`.
- `--include='*.txt' --exclude='*'` (включить все файлы `.txt`, исключить остальные)
- `--exclude='*' --include='*.txt'` (исключить все файлы, включая файлы `.txt` — непредвиденный результат)
Использование тестового запуска (`--dry-run`)
Перед фактической синхронизацией важных данных всегда используйте опцию `-n` или `--dry-run`, чтобы проверить ожидаемое поведение. Это очень эффективно для предотвращения непреднамеренного исключения или включения файлов.
- `rsync -avn --exclude='*.log' /path/to/source/ /path/to/destination/`
Опция `-vv` для отладки
Если правила исключения не работают должным образом, добавление опции `-vv` (verbose) поможет в отладке, поскольку `rsync` выведет подробную информацию о том, какие файлы пропускаются и по каким правилам они были исключены.
- `rsync -avv --exclude='*.bak' /path/to/source/ /path/to/destination/`