Порт не нужен.
См.https://firewalld.org/documentation/howto/open-a-port-or-service.html
For most of the more important services there is already a service defined in firewalld. Then there is no need to know about the default port number(s).
Давайте добавим несколько каталогов и файлов в BackupOfSettings
для проверки установки:
mkdir -p "$openWrtPath"/BackupOfSettings/sub1/sub2
touch "$openWrtPath"/BackupOfSettings/file1.tar.gz
touch "$openWrtPath"/BackupOfSettings/sub1/file2.tar.gz
touch "$openWrtPath"/BackupOfSettings/sub1/sub2/file3.tar.gz
И мы также добавляем подкаталоги sub1
и sub1/sub2
как включаемые в команду:
rsync -vvritn \
--include='BackupOfSettings/' \
--include='BackupOfSettings/sub1/' \
--include='BackupOfSettings/sub1/sub2/' \
--include='BackupOfSettings/*.tar.gz' \
--exclude='*' "$openWrtPath" "$ncpPath"
Это синхронизирует BackupOfSettings/file1.tar.gz
, BackupOfSettings/sub1/
и BackupOfSettings/sub1/sub2/
, но не какие-либо файлы внутри подкаталогов, поскольку *
не соответствует /
.
Теперь давайте попробуем BackupOfSettings/**.tar.gz
включить:
rsync -vvritn \
--include='BackupOfSettings/' \
--include='BackupOfSettings/sub1/' \
--include='BackupOfSettings/sub1/sub2/' \
--include='BackupOfSettings/**.tar.gz' \
--exclude='*' "$openWrtPath" "$ncpPath"
Сюда входят все три файла *.tar.gz
. **
похож на *
, но также соответствует разделителю каталогов/
(из sub1/
иsub1/sub2/
).
Отображение **
как исключения (, как в заголовке вопроса ), немного сложно, потому что --exclude='*'
исключает первый уровень ниже "$openWrtPath"
, что также означает, что любые подкаталоги и файлы уже исключены. (, так как родительский каталог на уровне 1 исключен ). Использование **
ничего не изменит.
Чтобы включить каталог BackupOfSettings
и любые подкаталоги ниже этого каталога, вы можете заменить указанные выше три каталога на
--include='BackupOfSettings/' \
--include='BackupOfSettings/**/' \
или
--include='BackupOfSettings/***/' \
Изman rsync
:
[...]
o a ’*’ matches any path component, but it stops at slashes.
o use ’**’ to match anything, including slashes.
[...]
o if the pattern contains a / (not counting a trailing /) or a "**", then it
is matched against the full pathname, including any leading directories.
If the pattern doesn’t contain a / or a "**", then it is matched only
against the final component of the filename. (Remember that the algorithm
is applied recursively so "full filename" can actually be any portion of a
path from the starting directory on down.)
o a trailing "dir_name/***" will match both the directory (as if "dir_name/"
had been specified) and everything in the directory (as if "dir_name/**"
had been specified). This behavior was added in version 2.6.7.
[...]
Двойная звездочка может интерпретироваться оболочкой как специальный подстановочный символ. См. такжеman bash
:
globstar
If set, the pattern ** used in a pathname expansion context will match
all files and zero or more directories and subdirectories.
If the pattern is followed by a /, only directories and subdirectories match.