Rsync - одна из самых полезных утилит для администратора сервера, но она синхронизируетвсе по умолчанию, что может раздражать, если ваше приложение создает много временных файлов. Вот как можно исключить файлы при использовании rsync.
Исключение из списка в файле
Это идеальный метод для исключения файлов и папок, поскольку вы всегда можете редактировать список и при необходимости изменять настройки. Вот синтаксис:
rsync - -exclude-from=/path/to/exclusion-file /path/to/source /path/to/dest
Сложная вещь с rsync заключается в том, что вам нужно использовать относительный путь, когда вы пытаетесь исключить все, потому что когда он пытается сопоставить исключения, он не будет использовать первую часть пути для соответствия … это странно.
Скажем, например, вы пытаетесь выполнить резервное копирование / data / web / и отправлять его на другой сервер, поэтому используйте команду rsync -a / data / web / user @ server: / backups / data / web /, чтобы сделать это произойдет … но вы действительно хотите пропустить синхронизацию / data / web / cache / folder. Когда rsync отправляется проверять ваш список исключений для каждого элемента, который он синхронизирует, он не будет проверять / data / web / cache /, поскольку ваша исходная команда rsync базируется в папке / data / web /. Он просто проверяет «кеш /» на список. Поэтому вам нужно поместить «кеш» в список, а не полный путь. Пример:
rsync -a --exclude-from=/data/exclusions /data/web/ /backups/
Теперь, чтобы исключить / data / web / cache и / data / web / temp из rsync с помощью этой команды, мы удалим / data / web / часть пути, а файл / data / exclusions просто будет содержать это:
cache* temp*
Вы заметите, что я добавил * в путь, чтобы убедиться, что он соответствует всем, что начинается с «кеша» в начале. Вы можете использовать этот звездный шаблон для более полезных причин, если хотите - скажите, что вы хотите исключить синхронизацию всех файлов.txt. Вы должны запустить шаблон со звездой, чтобы убедиться, что он всегда совпадает, и добавьте это:
*.txt
Это гарантирует, что эти типы файлов будут пропущены во время синхронизации. Это довольно просто.
Исключая единый элемент
Этот метод гораздо менее полезен, но вы можете использовать его на лету, если вам нужно. Если вы настраиваете скрипт для использования rsync, который вы обычно используете, вы должны взять дополнительную минуту, чтобы исключить из списка файлов, чтобы упростить дальнейшее обслуживание. Синтаксис очень похож:
rsync --exclude=relative/path/to/exclusion /source /dest
Тот же относительный путь должен применяться здесь, как указано выше.