16.8. Настройка выбора файлов

Проблема

Некоторые файлы, например .tmp и .bak, нужно исключить из архивации. Возможно, вы, наоборот, хотите задать список файлов для включения в архив.

Решение

Поместите списки в файлы и укажите их в параметрах rsync: --exclude-from и --include-from.

Файлы могут содержать перечни включаемых/исключаемых файлов, регулярные выражения или их комбинацию. Например, создайте файл /etc/local и добавьте туда нужные записи.

Затем включите параметры --exclude-from и --include-from в командную строку rsync:

$ rsync -ae ssh /home /etc --exclude-from=~/exclude-list backup.test.net:/home-etc

Комментарий

Лучше ограничиться либо включением, либо исключением файлов, так как присутствие обоих параметров одновременно может вызвать путаницу и привести к непредсказуемым результатам.

Использование --exclude-from полезно для настройки исключений массово, если вам нужно оставить в архиве только нужные файлы, такие как документы и основные конфигурации. Например, если вы хотите включить только файлы с расширением .conf, создайте файл include-list и добавьте туда записи, соответствующие вашей задаче:

# include-list
*.conf
*.cfg

Теперь запустите rsync с параметром --include-from, чтобы архивировать только файлы, соответствующие заданным критериям:

$ rsync -ae ssh /home /etc --include-from=~/include-list backup.test.net:/home-etc

В некоторых случаях полезно комбинировать файлы списков, добавляя к исключениям общие временные файлы, а к включениям — файлы конфигураций. Это гибкий способ настроить резервное копирование, особенно если вы администрируете несколько серверов с разными требованиями.

Регулярные выражения помогают уточнить критерии выборки файлов, например, исключая или включая файлы с определёнными префиксами или суффиксами. Так можно исключить временные и резервные файлы:

# exclude-list
*.tmp
*.bak

Для более сложных сценариев создайте условные правила, добавив файлы с опциями --include или --exclude непосредственно в команду:

$ rsync -ae ssh /home /etc --include="*.conf" --exclude="*.bak" backup.test.net:/home-etc

Эта команда архивирует файлы конфигурации, исключая резервные файлы.

Полезно помнить, что настройка с помощью файлов исключений и включений работает быстрее, чем настройка фильтров напрямую в командной строке, особенно если списки длинные. Это снижает вероятность ошибок и облегчает управление архивированием на длительной дистанции.

См. также

Документация по rsync.