首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在远程系统上使用Ansible任务移动/重命名文件

如何在远程系统上使用Ansible任务移动/重命名文件
EN

Stack Overflow用户
提问于 2014-06-11 20:30:17
回答 8查看 345.6K关注 0票数 230

如何使用Ansible模块在远程系统上移动/重命名文件/目录?我不想使用命令/shell任务,也不想将文件从本地系统复制到远程系统。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-06-11 22:22:53

文件模块不会复制远程系统上的文件。src参数仅在创建指向文件的符号链接时由文件模块使用。

如果您想要在远程系统上完全移动/重命名文件,那么最好的方法是使用命令模块来调用相应的命令:

代码语言:javascript
复制
- name: Move foo to bar
  command: mv /path/to/foo /path/to/bar

如果你想变得更花哨,那么你可以首先使用stat模块来检查foo是否确实存在:

代码语言:javascript
复制
- name: stat foo
  stat: path=/path/to/foo
  register: foo_stat

- name: Move foo to bar
  command: mv /path/to/foo /path/to/bar
  when: foo_stat.stat.exists
票数 237
EN

Stack Overflow用户

发布于 2014-06-28 01:42:10

我发现命令模块中的创建选项很有用。这样如何:

代码语言:javascript
复制
- name: Move foo to bar
  command: creates="path/to/bar" mv /path/to/foo /path/to/bar

我曾经像Bruce P建议的那样,使用stat来做两个任务的方法。现在,我用creates作为一个任务来做这件事。我认为这要清楚得多。

票数 114
EN

Stack Overflow用户

发布于 2017-09-28 22:55:21

另一个对我来说效果很好的选择是使用 synchronize module 。然后使用file模块删除原始目录。

下面是文档中的一个示例:

代码语言:javascript
复制
- synchronize:
    src: /first/absolute/path
    dest: /second/absolute/path
    archive: yes
  delegate_to: "{{ inventory_hostname }}"
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24162996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档