我正在尝试从在线数据库下载一组文件,这需要使用 wget。正在使用的 shell 脚本可以在我的一台计算机上运行,但我想让它在不同的设备上运行,这就是问题所在。无论出于何种原因,执行脚本时,它都会给出以下输出:
--2021-07-21 12:03:12-- https://archive.eso.org/downloadportalapi/calibrationxml/672f7dfa-65b6-4117-aaf5-9eb2fd4d8759/GRAVI.2017-06-29T02:59:55.346_raw2master.xml
Resolving archive.eso.org (archive.eso.org)... 134.171.46.246
Connecting to archive.eso.org (archive.eso.org)|134.171.46.246|:443... connected.
HTTP request sent, awaiting response... 200
Length: 3484 (3.4K) [application/octet-stream]
GRAVI.2017-06-29T02:59:55.346_raw2master.xml: Invalid argument
Cannot write to 'GRAVI.2017-06-29T02:59:55.346_raw2master.xml’ (Success).
它没有编写一行描述其保存位置,而是输出“无效参数”,我不确定为什么。两个设备都运行相同版本的 wget,并且两个设备上使用的脚本是相同的。我也有足够的磁盘空间,所以这也不是问题。如果你想看shell脚本,可以使用这里。
编辑:这是的输出
mount
/dev/sdb2 on /media/keegan/LaCie type exfat (rw,nosuid,nodev,relatime,uid=1001,gid=1001,fmask=0022,dmask=0022,iocharset=utf8,errors=remount-ro,uhelper=udisks2)
和df -h
/dev/sdb2/ 9.1T 14G 9.1T 1% /media/keegan/LaCie
按照评论中的要求。
答案1
您正尝试在名称包含非法字符(:
)的文件系统上创建文件。正如您在编辑中所述,该文件将在exFAT
文件系统上创建。这维基百科页面上exFAT
明确指出:
文件名中允许的字符:所有 Unicode 字符除了
U+0000
(NUL
) 到U+001F
(US
)、/
(斜杠)、\
(反斜杠)、:
(冒号)、*
(星号)、?
(问号)、"
(引号)、<
(小于)、>
(大于)和|
(竖线)
要进行验证,请尝试使用另一个命令创建该文件:
touch GRAVI.2017-06-29T02:59:55.346_raw2master.xml
如果这是原因,请使用其他文件系统或使用其他名称。
答案2
如前所述,目标文件系统 (exFAT) 存在一些字符限制。因此您应该使用 的--restrict-file-names=windows
选项wget
。这会转换目标文件名和目录名中的有问题的字符。