我遇到了一个困扰我的问题。我使用LFTP作为夜间自动文件传输过程的一部分,目的是收集站点上的所有.csv文件。
通常,mget
命令和通配符.csv
可以找到和下载我希望它的文件。但是,我遇到了一个有趣的情况,其中我有一个文件,用ls
标识为:
-rw------- 0 User Name - 6461 Oct 4 14:04 file name.csv
但是,当我运行mget *.csv时,我会得到以下错误消息:
mget: Access failed: 550 /path/to/file/4 14:04 file name.csv: No such file or directory.
它看起来像是在尝试mget时将文件元数据的%d %h:%m
部分附加到文件名中。我认为这可能是由于文件名中的空格造成的,但在测试中,情况似乎并非如此。
摘要
ls
检查mget
命令捕获mget
命令捕获,因为在搜索命令和get命令之间的某个位置,会在文件名的前面添加其他字符,从而导致它尝试获取一个不存在的文件。对我做错了什么有什么想法吗?
发布于 2017-10-05 16:30:18
这个问题的答案最终是特定于服务器和版本的,但我将分享最终是什么问题,以防它导致其他人在未来没有大量的问题。
FTP服务器有不同的机制来转义用户名。在这种情况下,操作用户帐户有两个部分的名字,与空格分隔。
FTP服务器转义用户名的方式可能导致lftp中mget的regex解析器抛出列中的所有内容。将用户名简化为符合lftp预期的值(似乎是一个词,可以包括_
和-
),最终解决了这个问题。
发布于 2019-04-17 19:59:35
为了在lftp中使用通配符,您需要指定文件的完整路径。尝试从EBI FTP服务器下载时,以下内容将无法工作
lftp -c 'open ftp.ebi.ac.uk; set xfer:clobber on; lcd /export/data/blastdb/temp/ ; mget nr*.tar.gz
使用mget调用添加路径允许通配符扩展,并如人们所期望的那样工作。
lftp -c 'open ftp.ebi.ac.uk; set xfer:clobber on; lcd /export/data/blastdb/temp/ ; mget /pub/blast/db/nr*.tar.gz
发布于 2022-04-12 13:44:30
也许你不在正确的目录中,或者你拼错了文件。您可以使用以下命令野蛮使用武力并下载整个树丛:
lftp> mirror .
顺便说一下,您的错误可能是文件的名称中有一个空格。
lftp> mget file\ name.csv
尽管如此,通配符应该使用\_space正确地扩展空间。
https://stackoverflow.com/questions/46567428
复制相似问题