Использование параметров Rsync include и exclude для включения каталога и файла по шаблону

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

вот как выглядит моя файловая система:

uploads/
  1260000000/
    file_11_00.jpg
    file_11_01.jpg
    file_12_00.jpg
  1270000000/
    file_11_00.jpg
    file_11_01.jpg
    file_12_00.jpg
  1280000000/
    file_11_00.jpg
    file_11_01.jpg
    file_12_00.jpg

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

вот команда, которую я пытаюсь:

rsync -nrv --include="**/file_11*.jpg" --exclude="*" /Storage/uploads/ /website/uploads/

это приводит к тому, что 0 файлов помечаются для передачи в моем сухом запуске. Я пробовал различные другие комбинации операторов -- include и --exclude, но либо продолжал не получать результатов, либо получил все, как будто не были установлены параметры include или exclude.

кто-нибудь знает, как это сделать?

3 ответов


проблема в том, что --exclude="*" говорит исключить (например)


добавить-m к рекомендуемому ответу выше, чтобы обрезать пустые каталоги.


rsync включить исключить примеры рисунка:

"*"         means everything
"dir1"      transfers empty directory [dir1]
"dir*"      transfers empty directories like: "dir1", "dir2", "dir3", etc...
"file*"     transfers files whose names start with [file]
"dir**"     transfers every path that starts with [dir] like "dir1/file.txt", "dir2/bar/ffaa.html", etc...
"dir***"    same as above
"dir1/*"    does nothing
"dir1/**"   does nothing
"dir1/***"  transfers [dir1] directory and all its contents like "dir1/file.txt", "dir1/fooo.sh", "dir1/fold/baar.py", etc...

и последнее замечание заключается в том, что просто не положиться на звездочки, которые используются в начале для оценки путей; как "**dir" (нормально использовать их для отдельных папок или файлов, но не путей) и обратите внимание, что более двух звездочек не работают для имен файлов.