Обзор
rsync экономит пропускную способность сети, передавая только измененные файлы, и позволяет точно контролировать передаваемые файлы/каталоги с помощью опций `--include` и `--exclude`. `--include` включает определенные шаблоны, а `--exclude` исключает определенные шаблоны. Порядок этих двух опций имеет значение.
Основные характеристики
- Инкрементная передача: эффективна за счет передачи только измененных файлов
- Удаленная синхронизация: возможность синхронизации с удаленными серверами через SSH и т. д.
- Гибкая фильтрация: точный контроль над целевыми объектами передачи с помощью опций `--include` и `--exclude`
- Сохранение атрибутов: сохранение различных атрибутов, таких как права доступа к файлам, владение, временные метки
Основные опции
Основные опции, часто используемые с опцией `--include` среди различных опций rsync.
Опции фильтрации
Опции базового поведения и эффективности
Сгенерированная команда:
Комбинируйте команды.
Описание:
`rsync` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Примеры различных сценариев синхронизации с использованием опции `--include` в rsync.
Синхронизация только файлов с определенным расширением
rsync -av --include='*.txt' --exclude='*' src/ dest/
Синхронизирует только файлы с расширением '.txt' из папки 'src' в текущем каталоге в папку 'dest'. Все остальные файлы исключаются.
Синхронизация только определенного каталога
rsync -av --include='data/***' --exclude='*' src/ dest/
Синхронизирует только каталог 'data/' и все его содержимое из папки 'src' в папку 'dest'. Все остальные файлы/каталоги исключаются.
Синхронизация с включением/исключением нескольких шаблонов
rsync -av --exclude='*.log' --include='report/***' --include='*.txt' --exclude='*' src/ dest/
Исключает файлы '.log' из 'src', но включает каталог 'report/' и файлы '.txt' в 'dest'. Остальные файлы исключаются.
Тестирование правил включения/исключения с помощью тестового прогона
rsync -avn --include='*.txt' --exclude='*' src/ dest/
Проверяет, как применяются правила фильтрации, без фактической синхронизации. Эта команда только выводит, какие файлы будут переданы.
Получение только определенных файлов с удаленного сервера
rsync -av --include='*.conf' --exclude='*' user@remote_host:/remote/path/ ./local/path/
Получает только файлы '.conf' из '/remote/path/' на удаленном сервере в './local/path/' локально.
Советы и меры предосторожности
Советы и меры предосторожности для эффективного использования опций `--include` и `--exclude` в rsync.
Важность порядка правил фильтрации
Опции `--include` и `--exclude` обрабатываются в том порядке, в котором они указаны в командной строке. Первое совпавшее правило имеет приоритет. Поэтому обычно более конкретные правила размещают раньше, а более общие — позже.
- Пример 1: `--include='specific_file' --exclude='*'` (включает только определенный файл и исключает все остальное)
- Пример 2: `--exclude='*.tmp' --include='*'` (включает все файлы, но исключает файлы .tmp)
Подстановочные знаки и сопоставление с шаблоном
Для сопоставления с шаблоном можно использовать различные подстановочные знаки.
- `*`: Любая строка (не пересекает границы каталогов)
- `?`: Один символ
- `[chars]`: Один из символов в скобках
- `***`: Любая строка, пересекающая границы каталогов (рекурсивное совпадение)
Значение слеша (/)
Действие может отличаться в зависимости от наличия слеша в конце шаблона.
- `dir/`: Применяется к самому каталогу 'dir' и всему его содержимому.
- `file_or_dir`: Применяется как к файлу, так и к каталогу с именем 'file_or_dir'.
Использование тестового прогона (`-n`)
При использовании сложных правил фильтрации всегда рекомендуется проверять ожидаемые результаты перед фактической синхронизацией с помощью опции `-n` или `--dry-run`. Это необходимо для предотвращения непреднамеренного удаления или включения файлов.