AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1064669
Accepted
transient_loop
transient_loop
Asked: 2021-05-26 09:40:33 +0800 CST2021-05-26 09:40:33 +0800 CST 2021-05-26 09:40:33 +0800 CST

`mv` 命令没有重命名,而是从 ansible 移到现有目录

  • 772

我正在运行 ansible 任务(在角色内):

- name: Rename dir
  become: yes
  shell: mv /data/files/1.6.5 /data/files/1.7.0

预期的效果是1.6.5重命名为1.7.0

现在,在目标主机上,在一个实例中我已经1.7.0存在:

~$ sudo ls -l /data/files/
total 1312
drwxr-x--- 2 ubuntu admin 643450 May 22 08:45 v1.6.5
drwxr-x--- 2 ubuntu admin 696320 May 25 10:19 v1.7.0

所以运行上面的命令,我得到了将 1.6.5 移动到 1.7.0而不是重命名它的尴尬结果。

这是为什么?这是不直观的。1.6.5不是空的,也不是1.7.0。

只是确保我没有遗漏一些明显的东西。或者这绝对不可能?我是从其他原因得到的吗?我只是看到了这样一个事实,即我现在拥有1.6.5内部1.7.0并进行取证以了解为什么会这样。

ansible mv
  • 1 1 个回答
  • 1164 Views

1 个回答

  • Voted
  1. Best Answer
    fboaventura
    2021-05-26T11:07:44+08:002021-05-26T11:07:44+08:00

    该mv命令不会检查目标文件夹是否存在。如果它不存在,它将重命名源文件夹。否则,它只会假设假装的结果是将源移动到目的地。

    从mv手册页:

       Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
    

    因此,如果您不希望这种情况发生,您可以在 Ansible playbook 上添加检查以验证目标文件夹是否已存在,然后仅在不存在时移动该文件夹:

    - name: Check if the folder exists
      stat:
        path: /data/files/1.7.0
      register: dest_folder
      become: yes
    
    - name: Rename dir
      become: yes
      shell: mv /data/files/1.6.5 /data/files/1.7.0
      when: not dest_folder.stat.exists
    
    

    这样,您将避免意外移动到预先存在的文件夹中。

    • 1

相关问题

  • 重复的 Ansible 任务

  • 无法形成站点中的文件的链接,该链接可用于使用 ansible 在远程服务器中启用的目录站点?

  • 如何执行 ansible 的特定角色?

  • Ansible 和 rbash

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve