如何在使用gsutil到rsync时排除隐藏的文件和目录?

问题描述:

我有一个目录结构的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 

一系列真正具体的正则表达式的解决了这个问题:

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文件夹 –