LFTP - 如果目录不存在则创建目录
Posted
技术标签:
【中文标题】LFTP - 如果目录不存在则创建目录【英文标题】:LFTP - Create directory if it does not exist 【发布时间】:2017-01-01 19:44:34 【问题描述】:如果目录不存在,我想使用 LFTP 创建目录。它应该是“单线”:
这确实有效:
lftp -c "open -u user,pass server; mkdir /test
lftp -c "open -u user,pass server; mkdir -p /test
如果目录已经存在则失败:
mkdir: Zugriff nicht möglich:550-无法创建目录:文件存在 16 个文件已使用 (0%) - 已授权:50000 个文件 1286621 KB 已使用 (0%) - 已授权:512000000 Kb (/test2)
但如果目录已经存在,它确实会失败。我怎样才能更优雅地做到这一点?
【问题讨论】:
你试过用谷歌搜索这个吗?我得到了许多结果,包括:this 和 this。也就是说,你用的是最新版的lftp
吗?
是的,我试过了。 LFTP 是 LFTP | Version 4.0.9 | Copyright (c) 1996-2010 Alexander V. Lukyanov
,它是从 repo 安装的。
是的,我似乎也无法在那里找到答案。但是is 有更新版本的 LFTP,你可以尝试升级看看是否有帮助。
仍然不会让我抱有希望,来自我上面评论中的同一页面:版本 3.7.12 - 2009-04-28 修复了 mput -d' command. fixed a core dump on
kill 命令上的核心转储。修复了 sftp 协议的 mkdir -p。修复了一些有符号/无符号转换错误。
【参考方案1】:
你是说mkdir -p /test
吗?
在这里回答:How to mkdir only if a dir does not already exist?
来自mkdir --help
:
-p, --parents 如果存在则没有错误,根据需要创建父目录
【讨论】:
我将此添加到我最初的问题中。 -p 不起作用。 lftp 的 mkdir 不等于 linux shell 的 mkdir【参考方案2】:您可以使用mkdir -f
选项来隐藏错误消息。该选项从 4.5.2 版本开始可用。最新的 lftp 版本是 4.7.3。
【讨论】:
在 lftpv4.7.4
上尝试了 -f
,它默默地失败了。我们正在使用 lftp 进行自动部署(不是我的决定),并且在它之后有更多命令,但是即使使用 -f
,部署程序也不会继续执行下一个命令。
"mkdir -f /path || .true" 可以帮忙【参考方案3】:
如果你不能升级到最新版本的lftp,你可以使用这个:
lftp -c "cd /my/new/directory || mkdir -p /my/new/directory"
只有在无法进入的情况下才会创建目录。
【讨论】:
cd /my/new/directory
如果目录不存在也会抛出错误。以上是关于LFTP - 如果目录不存在则创建目录的主要内容,如果未能解决你的问题,请参考以下文章