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.