当前位置:   article > 正文

rsync之include、exclude使用_rsync --include

rsync --include

rsync之include、exclude使用

注意:exclude可单独使用,include必须和exclude配合使用 

环境:

服务端:

在做同步之前必须要知道的含义:

  • --exclude='*'   排除所有文件,包括目录,因为在linux一切皆文件,代表排除所有
  • --exclude='*/'   排除所有目录
  • --include='*/'    包含所有目录
  • --include='*'     包含所有文件,包括目录,因为在linux一切皆文件,代表包含所有

 需求1:

不同步目录

  1. $ rsync -e 'ssh -p 24858' -avz --progress --exclude='*/' --prune-empty-dirs ./ kk@10.0.8.84:/home/kk/test/
  2. building file list ...
  3. 4 files to consider
  4. ./
  5. a.txt
  6. 2 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=2/4)
  7. b.txt
  8. 2 100% 1.95kB/s 0:00:00 (xfr#2, to-chk=1/4)
  9. c.txt
  10. 2 100% 1.95kB/s 0:00:00 (xfr#3, to-chk=0/4)
  11. sent 262 bytes received 76 bytes 676.00 bytes/sec
  12. total size is 6 speedup is 0.02

需求2:

仅同步a目录

  1. $ rsync -e 'ssh -p 24858' -avz --progress --include='*/' 'a' --exclude='*' --prune-empty-dirs ./ kk@10.0.8.84:/home/kk/test/
  2. building file list ...
  3. 10 files to consider
  4. a/
  5. a/b/
  6. a/b/c/
  7. sent 235 bytes received 21 bytes 512.00 bytes/sec
  8. total size is 0 speedup is 0.00

需求3:

仅同步a目录下的a.txt文件

  1. $ cd /home/kk/test
  2. $ rsync -e 'ssh -p 24858' -avz --progress --include='*/' --include='a/a.txt' --exclude='*' --prune-empty-dirs ./ kk@10.0.8.84:/home/kk/test/
  3. building file list ...
  4. 8 files to consider
  5. ./
  6. a/
  7. a/a.txt
  8. 2 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=5/8)
  9. sent 266 bytes received 41 bytes 614.00 bytes/sec
  10. total size is 2 speedup is 0.01

需求4:

同步所有的a.txt文件(这是在目标目录没有该文件的情况下,会全部同步,如果某个目录下有了该文件,则不会替换)

  1. $ rsync -e 'ssh -p 24858' -avz --progress --include='*/' --include='a.txt' --exclude='*' --prune-empty-dirs ./ kk@10.0.8.84:/home/kk/test/
  2. building file list ...
  3. 9 files to consider
  4. ./
  5. a.txt
  6. 2 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=7/9)
  7. a/
  8. a/a.txt
  9. 2 100% 1.95kB/s 0:00:00 (xfr#2, to-chk=5/9)
  10. sent 334 bytes received 60 bytes 788.00 bytes/sec
  11. total size is 4 speedup is 0.01

### 附加(可以结合jenkins的changelog插件去做同步,因为我这个需求比较奇葩,买的第三方公司产品,然后那边一直有版本更新,我们公司只需要改一些前端样式,所所以需要jenkins的changelog插件去获取变更记录,然后只更新变更记录的文件)

当然,如果要同步文件过多,还可以结合  --include-from 参数使用,将所有要通的文件路径写入到一个文件中

eg:

  1. $ cat rsync.txt
  2. a/a.txt
  3. b/b.txt
  4. c/c.txt
  5. $ rsync -e 'ssh -p 24858' -avz --progress --include='*/' --include-from='./rsync.txt' --exclude='*' --prune-empty-dirs ./ kk@10.0.8.84:/home/kk/test/
  6. building file list ...
  7. 10 files to consider
  8. ./
  9. a/
  10. a/a.txt
  11. 2 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=7/10)
  12. b/
  13. b/b.txt
  14. 2 100% 1.95kB/s 0:00:00 (xfr#2, to-chk=3/10)
  15. c/
  16. c/c.txt
  17. 2 100% 1.95kB/s 0:00:00 (xfr#3, to-chk=1/10)
  18. sent 429 bytes received 85 bytes 1,028.00 bytes/sec
  19. total size is 6 speedup is 0.01

 好了,这就是rsync之include、exclude使用的方法了,如有问题可与博主一起交流讨论!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/203491
推荐阅读
相关标签
  

闽ICP备14008679号