我正在尝试使用 rsync 将项目复制到我的服务器。
我在子目录中有项目特定的安装脚本
项目/规范/安装/项目1
我想要做的是排除 中的所有内容项目/规范目录但项目特定的安装目录:项目/规范/安装/项目1 .
rsync -avz --delete --include=specs/install/project1 \
--exclude=specs/* /srv/http/projects/project/ \
user@server.com:~/projects/project
但是像这样,specs 目录的内容被排除在外,但 install/project1 目录没有被包括在内。
我已经尝试了一切,但我似乎没有让它起作用
请您参考如下方法:
有时它只是一个细节。
只需更改您的包含模式,在包含模式的末尾添加一个尾随/即可:
rsync -avz --delete --include=specs/install/project1/ \
--exclude=specs/* /srv/http/projects/project/ \
user@server.com:~/projects/project
或者,作为替代,准备一个过滤器文件,如下所示:
$ cat << EOF >pattern.txt
> + specs/install/project1/
> - specs/*
> EOF
然后使用 --filter 选项:
rsync -avz --delete --filter=". pattern.txt" \
/srv/http/projects/project/ \
user@server.com:~/projects/project
有关更多信息,请转到 rsync(1) 手册页中的过滤规则部分。