使用 rsync 仅获取具有模式的文件夹及其内容

使用 rsync 仅获取具有模式的文件夹及其内容

我查遍了互联网,查看了正则表达式网站和其他所有内容,但我无法编写 rsync 命令来获取我想要的内容。

我需要镜像 FreeBSD 版本,但不需要 RC 版本和 BETA 版本,因此我只需将名称中带有 RELEASE 的任何文件夹与该文件夹的所有文件和子文件夹进行 rsync。

此时我运行此命令但没有成功:

rsync -vaz --delete --dry-run ftp2.br.freebsd.org::FreeBSD/releases/amd64 /usr/repos --include=".{0,}(RELEASE)" --filter="-! */"

让我们想象一下以下文件夹结构:

amd64/8.3-RELEASE/
amd64/8.4-RC2/
amd64/amd64/10.0-RC5/
amd64/amd64/10.0-RELEASE/
amd64/amd64/9.1-RELEASE/
amd64/amd64/9.2-BETA1/
amd64/amd64/9.2-BETA2/
amd64/amd64/9.2-RC1/

在这种情况下,rsync 应该只得到:

amd64/8.3-RELEASE/
amd64/amd64/10.0-RELEASE/
amd64/amd64/9.1-RELEASE/

答案1

尝试这个:

$ rsync -vaz --delete --dry-run ftp2.br.freebsd.org::FreeBSD/releases/amd64 /usr/repos \
    --include="*RELEASE/***" --include="*/" --exclude="*" --prune-empty-dirs

我想这就是你的追求。

相关内容