1

У меня есть блог Jekyll со структурой каталогов, которая содержит много скрытых файлов и каталогов, таких как .DS_Store, .idea и .git. Он также имеет промежуточные сборки артефактов и скриптов, которые начинаются с _, как _deploy.sh и _drafts.Как исключить скрытые файлы и каталоги при использовании gsutil в rsync?

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

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

Вот что я до сих пор:

#!/bin/sh 
gsutil -m rsync -rx '\..*|./[.].*$|_*' ./ gs://my-bucket.com/path 

И выход я наблюдения:

$ ./_deployblog.sh 
Building synchronization state... 
Starting synchronization 

ответ

1

ряд действительно конкретных регулярных выражений решает эту проблему:

gsutil -m rsync -rdx '\..*|.*/\.[^/]*$|.*/\..*/.*$|_.*' . gs://my-bucket.com/path 

Если шаблон исключения содержит 4 компонента, разделенных | символами.

\..*  <- excludes .files and .directories in the current directory 
.*/\.[^/]*$ <- excludes .files in subdirectories 
.*/\..*/.*$ <- excludes .directories in subdirectories 
_.*   <- excludes _files and _directories 
+0

Не работает для меня. Синхронизация папки .git –