synchronize模块介绍
synchronize模块⽤于实现rsync的简单版常⽤功能,它⽆法实现完整版的rsync,毕竟rsync功能太多太细致。如果
要使⽤rsync,还是应该使⽤command或shell模块来调⽤rsync命令。
常用命令:
ansible-doc -s synchronize
- name: A wrapper around rsync to make common tasks in your playbooks quick and easy.
action: synchronize
src= # 指定待传输的源⽂件。可以是相对路径,也可以是绝对路径。
dest= # ⽬标路径。可以是绝对路径,也可以是相对路径。
mode # 指定推(push)还是拉(pull)的传输模式。
# push时,本地为sender端,pull时,远程为sender端。默认为push。
archive # 等价于rsync的"-a"选项,即使⽤归档模式。它等价于rsync的"-rtopgDl"选项。值为yes/no。
times # 保留mtime属性。
group # 保留所属组属性。
owner # 保留所有者属性。
links # 拷贝链接⽂件⾃⾝。
perms # 保留权限属性。
recursive # 递归到⽬录中的⽂件。
compress # 传输过程中压缩传输。应该总是开启,除⾮遇到问题。即rsync的"-z"选项。
copy_links # 拷贝软链接的⽂件名和其指向的⽂件的内容。即a指向b⽂件时,将在⽬标端⽣成a普通
# ⽂件,但此⽂件中的内容是b中的内容。
dirs # ⾮递归⽅式传输⽬录。
delete # ⽬标端如果⽐源端⽂件多,则删除这些多出来的⽂件,要求recursive=yes。
checksum # 等价于"-c"选项,将基于⽂件的checksum来判断是否同步,⽽不是默认的quick check
# 算法,该算法基于⽂件⼤⼩和最近的mtime来判断是否要同步。该选项会⼤幅降低效率,
# 应谨慎使⽤。注意,它⽆法影响archive,即archive仍会启⽤。
existing_only # receiver端没有的⽂件不同步。但仍会传输,只是临时⽂件重组后不重命名⽽已。
partial # 等价于"--partial"选项。默认rsync在传输中断时会删除传输了⼀半的⽂件,指定该选
# 项将保留这部分不完整的⽂件,使得下次传输时可以直接从未完成的数据块开始传输。
dest_port # ssh的连接端⼝。
rsync_opts # 指定额外的rsync选项。使⽤数组的⽅式传递这些选项。
rsync_path # 等价于"--rsync-path"选项,⽬的是启动远程rsync。
# 例如可以指定[--rsync-path=rsync],甚⾄[--rsync-path=cd /tmp/c && rsync]。
# 当不指定rsync路径时,默认为/usr/bin/rysnc。
rsync_timeout # 指定rsync在多久时间内还没有数据传输就超时退出。
verify_host # 对⽬标主机进⾏ssh的host key验证。
应用
指定忽略目录
ansible host -m synchronize -a "src=dir1 dest=dir2 compress=yes rsync_opts=--exclude=dir"
指定包含目录
与–cvs-exclude选项使用可以将csv排除的文件类型包含进来
ansible host -m synchronize -a "src=dir1 dest=dir2 compress=yes rsync_opts=--cvs-exclude,--include=dir"
结合delete选项
- 同步两端文件,删除差异文件,但是源和目的目录的.svn目录以及log目录不作处理
ansible host -m synchronize -a "src=dir1 dest=dir2 compress=yes delete=yes rsync_opts=--exclude=.svn/,--exclude=log"