Я пытаюсь загрузить набор файлов из онлайн-базы данных, что требует использования wget. Используемый сценарий оболочки работает на одном из моих компьютеров, но я хочу, чтобы он работал на другом устройстве, и в этом проблема. По какой-то причине при выполнении скрипта он дает мне следующий вывод:

--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, и скрипт, используемый на обоих устройствах, идентичен. У меня также много места на диске, так что это тоже не проблема. Если вы хотите посмотреть сценарий оболочки, он доступен здесь. .

EDIT: Вот результаты

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
AdminBee 21 Июл 2021 в 18:10
Обычной практикой является добавление скрипта в вопрос. И гугл диск не разрешает доступ к файлу
 – 
Romeo Ninov
21 Июл 2021 в 13:25
2
Привет и добро пожаловать в Unix и Linux. Можете ли вы добавить строку wget с ее параметрами именно здесь? Я знаю, что вы связались со сценарием, но прямая линия поможет участникам начать работу.
 – 
Danny Staple
21 Июл 2021 в 13:26
Кроме того, можем ли мы с уверенностью предположить, что вы переходите на Linux / Unix? Можете ли вы добавить информацию о файловой системе, в которую он пытается записать файл?
 – 
Danny Staple
21 Июл 2021 в 13:27
Хорошо, похоже, проблема возникает из-за загрузки файлов напрямую на внешний жесткий диск, так как я могу успешно запустить скрипт на встроенном жестком диске компьютера. Любая идея, почему это может быть?
 – 
Azog
21 Июл 2021 в 15:13
Я работаю с машиной Linux (Ubuntu 20.04) в обоих случаях. Кроме того, я изменил ссылку на Google Диск, теперь вы сможете ее просмотреть. Я хотел избежать добавления сценария непосредственно в вопрос, так как он довольно длинный, но я могу сделать это, если вы попросите.
 – 
Azog
21 Июл 2021 в 15:19

1 ответ

Вы пытаетесь создать файл в файловой системе, имя которой содержит недопустимые символы (:). Как вы указали в своем редактировании, файл должен быть создан в файловой системе exFAT. На странице Википедии на exFAT прямо указано:

Допустимые символы в именах файлов: все символы Юникода кроме U+0000 (NUL) до U+001F (US), / (косая черта) , \ (обратная косая черта), : (двоеточие), * (звездочка), ? (знак вопроса), " (кавычки), < (меньше), > (больше) и | (вертикальная черта)

Для проверки попробуйте создать файл с помощью другой команды:

touch GRAVI.2017-06-29T02:59:55.346_raw2master.xml

Если причина в этом, используйте другую файловую систему или другое имя.

2
AdminBee 21 Июл 2021 в 18:15
Как упоминалось в вопросе, со скриптом не должно быть никаких проблем, поскольку он отлично работает «как есть» на другом устройстве, а теперь и на встроенном жестком диске рассматриваемого компьютера. Проблема, по-видимому, связана с попыткой загрузки файлов напрямую на внешний жесткий диск по какой-либо причине.
 – 
Azog
21 Июл 2021 в 15:20
Чтобы ответить на ваш вопрос более прямо, я могу загрузить отдельные файлы, используя curl и немного обходного пути, но я хотел бы избежать необходимости переписывать сценарии, которые предварительно генерируются базой данных, когда я делаю загрузку. запрос.
 – 
Azog
21 Июл 2021 в 17:24