ansible使用synchronize替代copy模块提升远程复制效率

时间:2024-04-09 10:49:25

ansible2.4 使用synchronize会有bug, ping模块可以ping通,但是synchronize模块还是需要输入密码,除非做免密登陆。可以用过升级ansible 版本解决。

 

 

 

使用ansible copy模复制文件夹效率远远不及synchronize

同一个77m大小的文件,copy模块需要耗时一分多,但是synchronize只要5秒

 

“copy”模块以递归方式复制工具无法扩展到大量(>数百个)文件。

The “copy” module recursively copy facility does not scale to lots (>hundreds) of files. For alternative, see synchronize module, which is a wrapper around rsync.

https://docs.ansible.com/ansible/copy_module.html 

 

synchronize的主要弊端是需要安装rsync,不过一般linux服务器上都有这个。

As far as I can tell synchronize has all the functionality that copy does but may be much faster so I'm considering changing everything to use synchronize. The only downside of synchronize is that rsync is required, which seems fairly ubiquitous in the Linux environment.

 

使用copy模块耗时

 

date1=`date`;ansible ac-wehub -m copy  -a   "src=/data/module/tmp/jenkins/ac-wehub  dest=/data/module/tmp/jenkins/  ";date2=`date`;echo -e  "执行前时间 $date1  \n\r执行完成时间 $date2"

ansible使用synchronize替代copy模块提升远程复制效率

 

 

删除copy模块复制过去的文件夹之后 使用synchronize耗时

ansible ac-wehub  -a "rm -rf /data/module/tmp/jenkins/ac-wehub"

 

date1=`date`;ansible ac-wehub -m synchronize  -a   "src=/data/module/tmp/jenkins/ac-wehub  dest=/data/module/tmp/jenkins/ delete=yes checksum=yes ";date2=`date`;echo -e  "执行前时间 $date1  \n\r执行完成时间 $date2"

 

ansible使用synchronize替代copy模块提升远程复制效率

 

 

 

效率上就有明显的差距。对于部署大量项目的时候来说 就更为明显了。

有些校验出来一致的jar  都不需要重新复制

 

 

以下是关于rsync的模块。

参数

必填

默认值

选项

说明

archive

no

yes

yes

 no

显示rsync的存档标志所属信息

checksum

no

no

 yes

  no

校验

compress

no

yes

yes

 no

在传送过程中压缩文件数据

dest

yes

 

 

目标路径,路径可以绝对或相对

delete

no

no

yes

no

删除srv中不存在的文件

copy_links

no

no

yes

no

复制符号链接,是映射的文件复制

dest_port

no

22

yes

no

目标主机端口号(ansible_ssh_port优先于此值)

group

no

存档选项值

yes

no

保留文件的所属组

owner

no

存档选项值

yes

no

保留文件的所属者(只有超级用户可以操作)

perms

no

存档选项值

yes

no

保留文件的权限

rsync_opts

no

no

 

通过此选项指定其他的rsync的选项

rsync_path

no

 

 

指定rsync命令到远程主机上运行

rsync_timeout

no

0

 

指定rsync的timeout时间以秒为单位

src

yes

 

 

源地址(路径可以是绝对或相对的)

times

no

存档选项值

yes

no

保留文件的修改时间

exclude-from

no

no

yes

no

用于定义排除多个文件夹和文件

exclude

no

no

yes

no

用于定义排除单独的文件夹和文件