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

rsync: Синхронизация и резервное копирование файлов (с использованием опции include)

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

Обзор

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`. Это необходимо для предотвращения непреднамеренного удаления или включения файлов.


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