需求:本地 go 项目上传到测试服务器测试一段时间之后,本地项目又做了一部分修改,再次同步代码文件时,为了不破环已经配置好的配置文件等其他配置数据, 只是想把代码 go 代码重新同步, 而每次同步一个文件夹又比较麻烦,于是本地测试下这个可以同步本地目录及其子目录的 go 文件到测试服务器的指定目录的命令.
源文件夹 d2
-> % tree d2
d2
├── a1
│ ├── a.go
│ ├── a.txt
│ └── b1
│ ├── b.go
│ ├── b.txt
│ └── c1
│ ├── c.go
│ └── c.txt
├── a2
│ └── a.go
├── x.go
└── x.txt
4 directories, 9 files
目的文件夹 d1
-> % tree d1
d1
0 directories, 0 files
将 d2 目录下的所有 .go 文件同步到 d1 下 (不包括子目录)
rsync -avrP --include "*.go" --exclude="*" d2/ d1/
同步后 d1 目录结果
-> % tree d1
d1
└── x.go
0 directories, 1 file
将 d2 目录及其子目录下的所有 .go 文件同步到 d1 目录及其子目录下
rsync -avrP --include "*.go" --include "*/" --exclude="*" d2/ d1/
同步后 d1 目录结果
-> % tree d1
d1
├── a1
│ ├── a.go
│ └── b1
│ ├── b.go
│ └── c1
│ └── c.go
├── a2
│ └── a.go
└── x.go
4 directories, 5 files