带有通配符的lftp mget错误标识文件

问题描述 投票:0回答:2

我遇到了一个困扰我的问题。我正在使用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命令未捕获该文件,因为在search和get命令之间的某处,其他字符会添加到文件名的前面,导致它尝试获取不存在的文件

对我做错了什么的想法?

wildcard lftp
2个回答
0
投票

这个问题的答案最终是服务器和版本特定的,但我将分享最终成为问题的,以防它导致其他人在将来没有出现大量问题。

FTP服务器具有不同的机制来转义用户的名称。在这种情况下,操作用户帐户具有两部分名字,具有空格分隔。

FTP服务器执行(或不执行)转义用户名的方式可能会导致lftp中mget的正则表达式解析器抛出一列的所有内容。将用户名减少到符合lftp预期的值(似乎是一个单词,可以包括_-)最终解决了这个问题。


0
投票

要使用带有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
© www.soinside.com 2019 - 2024. All rights reserved.