如何在远程系统上使用Ansible模块移动/重命名文件/目录?我不想使用命令/shell任务,也不想将文件从本地系统复制到远程系统。
当前回答
我发现命令模块中的创建选项很有用。这个怎么样:
- name: Move foo to bar
command: creates="path/to/bar" mv /path/to/foo /path/to/bar
我曾经像Bruce P建议的那样使用统计数据进行2个任务方法。现在我用create完成一个任务。我觉得这清楚多了。
其他回答
你可以通过
使用Ad Hoc命令
ansible all -m command -a" mv /path/to/foo /path/to/bar"
或者你,如果你想用剧本的话
- name: Move File foo to destination bar
command: mv /path/to/foo /path/to/bar
在Windows上: —name:将旧文件夹移至备份目录 win_command: "cmd.exe /c move /Y {{sourcePath}}{{目的地文件夹路径}}"
要重命名,请使用rename或ren命令
Bruce并没有试图统计目的地以检查是否移动已经在那里的文件;在尝试mv之前,他正在确保要移动的文件实际存在。
如果你像汤姆一样,只在文件不存在的情况下才移动,我认为我们仍然应该将布鲁斯的支票整合到混合中:
- name: stat foo
stat: path=/path/to/foo
register: foo_stat
- name: Move foo to bar
command: creates="path/to/bar" mv /path/to/foo /path/to/bar
when: foo_stat.stat.exists
我知道这是一个多年前的话题,但我感到沮丧,并为自己构建了一个角色,对任意文件列表执行此操作。扩展到你认为合适的范围:
main.yml
- name: created destination directory
file:
path: /path/to/directory
state: directory
mode: '0750'
- include_tasks: move.yml
loop:
- file1
- file2
- file3
move.yml
- name: stat the file
stat:
path: {{ item }}
register: my_file
- name: hard link the file into directory
file:
src: /original/path/to/{{ item }}
dest: /path/to/directory/{{ item }}
state: hard
when: my_file.stat.exists
- name: Delete the original file
file:
path: /original/path/to/{{ item }}
state: absent
when: my_file.stat.exists
注意,此处硬链接比复制更可取,因为它固有地保留了所有权和权限(此外,不会为文件的第二个副本消耗更多的磁盘空间)。
- name: Example
hosts: localhost
become: yes
tasks:
- name: checking if a file exists
stat:
path: "/projects/challenge/simplefile.txt"
register: file_data
- name: move the file if file exists
copy:
src: /projects/challenge/simplefile.txt
dest: /home/user/test
when: file_data.stat.exists
- name: report a missing file
debug:
msg: "the file or directory doesn't exist"
when: not file_data.stat.exists
推荐文章
- 如何删除文件中的特定行?
- c++11返回值优化或移动?
- 使用Java重命名文件
- 如何从Python包内读取(静态)文件?
- 如何删除目录内的文件和文件夹?
- 为什么我得到“Pickle - EOFError: run out of input”读取一个空文件?
- 写字符串到文本文件,并确保它总是覆盖现有的内容。
- 从另一个文件导入变量?
- 寻找不属于特定用户的文件
- 如何复制文件跨计算机使用SSH和MAC OS X终端
- 如何在node.js中移动文件?
- 如何修改文本文件?
- 为什么Path。以Path.DirectorySeparatorChar开头的文件名合并不正确?
- 移动一个文件到服务器上的另一个文件夹
- Python列表目录,子目录和文件