rsync 同步指定文件类型的文件

需求:本地 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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

目的文件夹 d1

-> % tree d1
d1

0 directories, 0 files
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

将 d2 目录下的所有 .go 文件同步到 d1 下 (不包括子目录)

rsync -avrP --include '*.go' --exclude='*' d2/ d1/

  • 1
  • 1

同步后 d1 目录结果

-> % tree d1
d1
└── x.go

0 directories, 1 file
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

将 d2 目录及其子目录下的所有 .go 文件同步到 d1 目录及其子目录下

rsync -avrP --include '*.go' --include '*/' --exclude='*' d2/ d1/

  • 1
  • 1

同步后 d1 目录结果

-> % tree d1
d1
├── a1
│   ├── a.go
│   └── b1
│       ├── b.go
│       └── c1
│           └── c.go
├── a2
│   └── a.go
└── x.go

4 directories, 5 files
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
(0)

相关推荐