Главная > Управление файлами и каталогами > rsync-exclude

rsync-exclude: Исключение определенных файлов/каталогов при синхронизации

Команда `rsync` — это мощный инструмент для эффективной синхронизации файлов между локальными и удаленными системами. В частности, с помощью опций `--exclude` и `--exclude-from` вы можете исключить из синхронизации определенные файлы, каталоги или элементы, соответствующие шаблонам. Это руководство фокусируется на функциях исключения `rsync`, которые очень полезны для предотвращения ненужной передачи файлов и для резервного копирования или копирования только определенных данных.

Обзор

Функция исключения `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/`

Те же команды в категории