rsync исключает один файл из корневой папки

Я хочу rsync из папки, которая contanins index.php (которая должна быть исключена), и многие другие каталоги содержат index.php тоже. Я создал файл exclude и добавил index.php. но все файлы index.php исчезли. Есть ли подходящий способ избежать единственного файла из синхронизации?

1
задан 2 November 2017 в 07:32

1 ответ

Фильтр --exclude работает следующим образом:

Если шаблон не начинается с косой черты, он совпадает в конце пути в любом месте дерева. --exclude myfile.txt соответствует любому файлу с именем myfile.txt в любом каталоге. --exclude logs/myfile.txt соответствует myfile.txt внутри любого каталога с именем logs. Если шаблон начинается с косой черты, он привязывается к корню переданных файлов. Чтобы определить, какой корень переданных файлов, удалите все после последней косой черты в исходном пути. Например, в следующей команде rsync путь к исходному файлу - /srv/files/something, поэтому корень передачи - /srv/files/.
rsync -a /srv/files/something host:/backup/files/
Итак, чтобы исключить исходный файл /srv/files/logs/myfile.txt, вы должны использовать --exclude /logs/myfile.txt, где этот слэш в начале шаблона exclude относится к корню передачи, который коренится в /srv/files/ (на источнике).
2
ответ дан 24 May 2018 в 01:48
  • 1
    это действительно хорошее объяснение - мне не удалось найти это в моей версии rsync man-страницы. есть ли официально зарегистрированные источники, которые объясняют это? – billynoah 7 April 2018 в 03:32
  • 2
    Это объясняется в подзаголовках «ВКЛЮЧЕНИЕ / ИСКЛЮЧЕНИЕ ПРАВИЛ ПРАВ.». и "ANCHORING INCLUDE / EXCLUDE PATTERNS" в manpage (например, здесь или здесь ). – thomasrutter 7 April 2018 в 17:15

Другие вопросы по тегам:

Похожие вопросы: