curl для получения данных с FTP-сервера не работает

Вопрос или проблема

Я пытаюсь загрузить данные с https://data.tpdc.ac.cn/en/data/30131436-88d1-4be3-8e3d-14905a29d6d6/. Я использую curl -u download_68313574:22193606 'ftp://ftp2.tpdc.ac.cn:6201/SM_1km_Month/*' -o ., но он не отвечает с RETR ответом: 550.

Любая помощь будет полезна.

Для меня curl сообщает

curl: (78) Файл не существует.

Я не уверен, что curl (с вышеуказанной командой) может обрабатывать и загружать подкаталоги.

Но я пробую с wget с командой:

wget -r ftp://download_68313574:[email protected]:6201/SM_1km_Month/*

и это работает хорошо для меня:

--2024-10-24 19:49:57--  ftp://download_68313574:*password*@ftp2.tpdc.ac.cn:6201/SM_1km_Month/*
           => ‘ftp2.tpdc.ac.cn+6201/SM_1km_Month/.listing’
Разрешение ftp2.tpdc.ac.cn (ftp2.tpdc.ac.cn)... 210.72.14.201
Подключение к ftp2.tpdc.ac.cn (ftp2.tpdc.ac.cn)|210.72.14.201|:6201... подключено.
Вход как download_68313574 ... Успешно вошел!
==> SYST ... готово.    ==> PWD ... готово.
==> TYPE I ... готово.  ==> CWD (1) /SM_1km_Month ... готово.
==> PASV ... готово.    ==> LIST ... готово.

ftp2.tpdc.ac.cn+6201/SM_1km_     [ <=>                                          ]   1,52K  --.-KB/s    за 0,006с

2024-10-24 19:50:00 (260 КБ/с) - ‘ftp2.tpdc.ac.cn+6201/SM_1km_Month/.listing’ сохранен [1559]

Удален ‘ftp2.tpdc.ac.cn+6201/SM_1km_Month/.listing’.
--2024-10-24 19:50:00--  ftp://download_68313574:*password*@ftp2.tpdc.ac.cn:6201/SM_1km_Month/2000/*
           => ‘ftp2.tpdc.ac.cn+6201/SM_1km_Month/2000/.listing’
==> CWD (1) /SM_1km_Month/2000 ... готово.
==> PASV ... готово.    ==> LIST ... готово.

ftp2.tpdc.ac.cn+6201/SM_1km_     [ <=>                                          ]   1,19K  --.-KB/s    за 0,006с

2024-10-24 19:50:01 (199 КБ/с) - ‘ftp2.tpdc.ac.cn+6201/SM_1km_Month/2000/.listing’ сохранен [1220]

Удален ‘ftp2.tpdc.ac.cn+6201/SM_1km_Month/2000/.listing’.
--2024-10-24 19:50:01--  ftp://download_68313574:*password*@ftp2.tpdc.ac.cn:6201/SM_1km_Month/2000/SM.1km.Month.200002.Global.v001.tif
           => ‘ftp2.tpdc.ac.cn+6201/SM_1km_Month/2000/SM.1km.Month.200002.Global.v001.tif’
==> CWD не требуется.
==> PASV ... готово.    ==> RETR SM.1km.Month.200002.Global.v001.tif ... готово.
Длина: 423861286 (404M)

          ftp2.tpdc.ac.cn+62   0%[                                              ] 136,51K   112КБ/с

<snip>

Ответ или решение

Проблема с использованием curl для загрузки данных с FTP-сервера

Когда вы пытаетесь получить данные с FTP-сервера с помощью команды curl, и сталкиваетесь с проблемами, такими как ошибка 550 или сообщение о том, что файл не существует, важно учитывать несколько моментов. Я приведу вам детали, которые помогут устранить возникшие трудности.

Описание проблемы

Вы используете следующую команду curl:

curl -u download_68313574:22193606 'ftp://ftp2.tpdc.ac.cn:6201/SM_1km_Month/*' -o .

Вы получаете ошибку:

curl: (78) The file does not exist

Эта ошибка обычно указывает на то, что запрашиваемый ресурс не может быть найден на сервере FTP. Ваша команда пытается использовать символ подстановки (*), что может быть одной из причин возникновения проблемы, поскольку не все клиенты поддерживают его в контексте FTP-запросов.

Альтернативное решение с использованием wget

Вы упомянули, что аналогичная команда с использованием wget работает:

wget -r ftp://download_68313574:22193606@ftp2.tpdc.ac.cn:6201/SM_1km_Month/*

Команда wget поддерживает рекурсивную загрузку, что может быть ключом к вашему успешному получению данных. Она способна обходить подкаталоги и загружать файлы с них, в то время как curl в основном предназначен для выполнения отдельных запросов.

Возможные решения для curl

Если вы хотите продолжить использовать curl, вот несколько шагов, которые могут помочь:

  1. Проверьте доступность файлов: Убедитесь, что файлы действительно существуют. Для этого можно сначала выполнить команду LIST, используя curl, чтобы проверить доступные файлы:

    curl -u download_68313574:22193606 'ftp://ftp2.tpdc.ac.cn:6201/SM_1km_Month/'

    Это даст вам список файлов и папок, доступных в директории.

  2. Используйте полные пути: Вместо использования символов подстановки, попробуйте указать полный путь к конкретному файлу, который вы хотите скачать.

  3. Включите отладку: Добавьте опцию -v к команде curl, чтобы получить более подробную информацию о том, что происходит в процессе выполнения.

    curl -v -u download_68313574:22193606 'ftp://ftp2.tpdc.ac.cn:6201/SM_1km_Month/some_file.tif' -o some_file.tif

Заключение

Использование wget в вашем случае является более подходящим вариантом для работы с директорными структурами на FTP-сервере. Если вы хотите продолжить работать с curl, обязательно убедитесь в правильности пути и наличии необходимых файлов. Надеюсь, это поможет вам успешно загрузить требуемые данные. Если возникают дополнительные вопросы, пожалуйста, дайте знать.

Оцените материал
Добавить комментарий

Капча загружается...