Skip to content
章节导航

archive 模块

archive 模块 用于创建一个或多个文件或树的压缩存档。

常用参数

参数名是否必须参数类型默认值说明
pathliststring要压缩或存档的一个或多个文件的远程绝对路径、glob 或路径列表或 glob。
deststring目标存档的文件名,注意:父目录必须存在于远程主机上。
removebooleanfalse添加到存档后删除所有添加的源文件和树
formatbz2gztarxzzipgz要使用的压缩类型
exclude_pathliststring[]要从路径列表和 glob 扩展中排除的一个或多个文件的远程绝对路径、glob 或路径列表或 glob。
force_archivebooleanfalse允许强制模块将其视为存档,即使只指定了一个文件。

更多参数可以使用命令 ansible-doc -s archive 获取更多使用相关的文档或者查看官方文档

一些示例

将指定目录压缩到指定文件

将目录 /etc/ 压缩成 /tmp/etc.tar.gz

bash
ansible all -i src/inventory.yml -m archive -a "path=/etc/ dest=/tmp/etc.tar.gz"

压缩指定文件并删除

将文件 /tmp/nginx-1.23.4 压缩到 /tmp/nginx.tar.gz 并将源文件删除。

bash
ansible all -i src/inventory.yml -m archive -a "path=/tmp/nginx-1.23.4 dest=/tmp/nginx.tar.gz remove=true"

注意: 当传递 remove=true 参数后,源文件 /tmp/nginx-1.23.4 将再打包后被删除,请注意文件的备份

创建一个 zip 存档

通过传递参数 format=zip 来指定打包的压缩格式为 zip

bash
ansible all -i src/inventory.yml -m archive -a "path=/tmp/nginx-1.23.4 dest=/tmp/nginx.zip format=zip"

创建包含多个文件的 bz2 存档

使用 ad-hoc 模式可以通过, 区分多个文件的路径。

如果使用 playbook 模式可以通过传递列表的方式指定多个文件路径。

bash
ansible all -i src/inventory.yml -m archive -a "path=/var/log,/tmp/nginx-1.23.4 dest=/tmp/nginx-1.23.4.zip format=bz2"

创建存档时排除特定的目录名

通过传递 excelude_path 参数指定排除的文件名。

bash
ansible all -i src/inventory.yml -m archive -a "path=/var/log,/tmp/nginx-1.23.4 dest=/tmp/nginx-1.23.4.zip exclude_path=/var/log/secure*,/path/to/foo/baz format=bz2"

创建单个文件的 tar.gz 存档

bash
ansible all -i src/inventory.yml -m archive -a "path=/etc/profile dest=/tmp/profile.tar.gz format=gz force_archive=true"