Google cloud storage 如何在gsutil rsync中包含文件?

Google cloud storage 如何在gsutil rsync中包含文件?,google-cloud-storage,Google Cloud Storage,gsutil rsync有一个“排除”选项(-x),但没有“包括”选项。 是否有某种方法可以在不重新同步整个目录的情况下包含选定的文件? 排除除所需文件以外的所有文件将不起作用,因为随机文件将保存到该目录 目前gsutil rsync没有“包含”选项。一个解决办法是创建rsync\u include\u files目录并用指向文件的符号链接填充它。然后rsync rsync\u include\u files目录: $GSUTIL rsync -c -C $SOURCE/rsync_includ

gsutil rsync有一个“排除”选项(-x),但没有“包括”选项。 是否有某种方法可以在不重新同步整个目录的情况下包含选定的文件? 排除除所需文件以外的所有文件将不起作用,因为随机文件将保存到该目录


目前gsutil rsync没有“包含”选项。

一个解决办法是创建rsync\u include\u files目录并用指向文件的符号链接填充它。然后rsync rsync\u include\u files目录:

$GSUTIL rsync -c -C $SOURCE/rsync_include_files/
$DESTINATION/rsync_include_files/
但有一个警告。 从备份还原数据时,文件位于符号链接所在的位置,符号链接将丢失。
要完成恢复,需要手动移动文件并重新制作符号链接。

或者您可以将文件名列表存储在一个数组中,并使用python的负前瞻断言将该数组排除在外,文件名之间用
分隔。

gsutil -m rsync -c -x "^(?!${REGEX_INV_EXCLUSION_LST}$).*'" "gs://${source}/" "${dest}/"

我有一个类似的场景,文件的逐行拷贝太长了。我通过运行

gsutil ls gs://<bucket_name>/<file_construct>
@wolfv-“是否有某种方法可以在不重新同步整个目录的情况下包含所选文件?”

这将允许您排除除明确需要的文件以外的所有文件:

fx=""
while read f; do
    if ! [[ "$f" = "thefileiwanttorsync" ]]; then
        [[ ${fx} = "" ]] || fx+="|" 
        fx+="^${f}\$"
    fi
done < <(ls -1 /directory/path) 

gsutil rsync -x "${fx[@]}" /directory/path  gs://bucket/some/directory/path
fx=“”
同时读取f;做
如果![[“$f”=“thefileiwanttorsync”];然后
[[${fx}=”“]| | fx+=“|”
fx+=“^${f}\$”
fi

完成<如果您知道要同步的单个文件的名称,您甚至不需要像Balajee建议的那样执行ls。只需在反向正则表达式中指定该基本文件名:

gsutil rsync -x '(?!^myfile\.txt$)' ./directory-with-desired-file gs://my-bucket

这里的例子:

perfect,只是一个打字错误
gsutil-mrsync-c-x“^(?!${REGEX\u INV\u EXCLUSION\u LST}$).'”gs://${source}/'${dest}/'${code>