带通配符的 lftp mget 错误识别文件
lftp mget with wildcard mis-identifies a file
我运行遇到了一个令我困惑的问题。我将 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
命令捕获,因为在搜索和获取命令之间的某处,额外的字符被添加到文件名的前面,导致它尝试获取文件那不存在
对我做错了什么有什么想法吗?
这个问题的答案最终是特定于服务器和版本的,但我会分享最终的问题,以防它导致其他人在未来没有大量问题。
FTP 服务器有不同的转义用户名的机制。在这种情况下,操作用户帐户的名字由两部分组成,space 分隔。
FTP 服务器转义(或不转义)用户名的方式可能导致 lftp 中 mget 的正则表达式解析器将所有内容从列中丢弃。将用户名减少到符合 lftp 预期的值(似乎是一个词,可以包括 _
和 -
)最终解决了这个问题。
为了在 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
可能您不在正确的目录中,或者您拼错了文件。
您可以使用以下命令暴力破解并下载整个树状图:
lftp> mirror .
顺便说一下,您的错误可能是您的文件名中有一个 space。
lftp> mget file\ name.csv
虽然,通配符应该正确扩展 space 和 \_space
我运行遇到了一个令我困惑的问题。我将 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
命令捕获,因为在搜索和获取命令之间的某处,额外的字符被添加到文件名的前面,导致它尝试获取文件那不存在
对我做错了什么有什么想法吗?
这个问题的答案最终是特定于服务器和版本的,但我会分享最终的问题,以防它导致其他人在未来没有大量问题。
FTP 服务器有不同的转义用户名的机制。在这种情况下,操作用户帐户的名字由两部分组成,space 分隔。
FTP 服务器转义(或不转义)用户名的方式可能导致 lftp 中 mget 的正则表达式解析器将所有内容从列中丢弃。将用户名减少到符合 lftp 预期的值(似乎是一个词,可以包括 _
和 -
)最终解决了这个问题。
为了在 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
可能您不在正确的目录中,或者您拼错了文件。 您可以使用以下命令暴力破解并下载整个树状图:
lftp> mirror .
顺便说一下,您的错误可能是您的文件名中有一个 space。
lftp> mget file\ name.csv
虽然,通配符应该正确扩展 space 和 \_space