Я пытаюсь загрузить копию базы данных postgresql из Amazon S3 в cygwin. Но это дает нули по всем направлениям, в результате чего получается бесполезный файл. Это моя команда curl:

 curl `heroku.bat pgbackups:url` -o latest.dump --verbose

что приводит к: * STATE: INIT => CONNECT handle 0x60002de60; строка 1011 (соединение № -5000) * Имя хоста не найдено в кеше DNS * Попытка 54.231.1.232 ... * Добавление дескриптора: conn: 0x600069f80 * Добавление дескриптора: send: 0 * Добавление дескриптора: recv: 0 * Curl_addHandleToPipeline: длина: 1 * 0x60002de60 находится на голове отправляющей трубы! * - Conn 0 (0x600069f80) send_pipe: 1, recv_pipe: 0 * STATE: CONNECT => WAITCONNECT handle 0x60002de60; линия 1058 (соединение № 0)% Всего% получено% Xferd Средняя скорость Время Время Время Текущая загрузка Загрузка Всего израсходовано Левая скорость 0 0 0 0 0 0 0 0 -: -: - -: -: - - -: -: - 0 * Подключен к s3.amazonaws.com (54.231.1.232) порт 443 (# 0) * Успешно настроены места проверки сертификатов: * CAfile: /usr/ssl/certs/ca-bundle.crt CApath: нет * SSLv3, квитирование TLS, клиент привет (1):} [данные не показаны] * STATE: WAITCONNECT => PROTOCONNECT handle 0x60002de60; строка 1171 (соединение № 0) * SSLv3, квитирование TLS, сервер привет (2): {[данные не показаны] * SSLv3, квитирование TLS, CERT (11): {[данные не показаны] * SSLv3, квитирование TLS, сервер завершен (14): {[данные не показаны] * SSLv3, квитирование TLS, обмен ключами клиента (16):} [данные не показаны] * SSLv3, шифр изменения TLS, клиент привет (1):} [данные не показаны] * SSLv3 , TLS handshake, Завершено (20):} [данные не показаны] * SSLv3, шифр изменения TLS, Клиент привет (1): {[данные не показаны] * SSLv3, TLS рукопожатие, Завершено (20): {[данные не показаны ] * SSL-соединение с использованием AES128-SHA * Сертификат сервера: отредактирован * Сертификат SSL подтвержден. * STATE: PROTOCONNECT => DO handle 0x60002de60; линия 1190 (соединение № 0)

GET /hkpgbackups/app21475484@heroku.com/b007.dump?Пользователь-агент, отредактированный AWSA: curl /7.34.0 Хост: s3.amazonaws.com Принять: /

 * STATE: DO => DO_DONE handle 0x60002de60; line 1263 (connection #0)
 * STATE: DO_DONE => WAITPERFORM handle 0x60002de60; line 1384 (connection #0)
 * STATE: WAITPERFORM => PERFORM handle 0x60002de60; line 1395 (connection #0)
 * HTTP 1.1 or later with persistent connection, pipelining supported
 < HTTP/1.1 400 Bad Request
 < Transfer-Encoding: chunked
 < Date: Wed, 02 Jul 2014 21:03:39 GMT
 < Connection: close
 * Server AmazonS3 is not blacklisted
 < Server: AmazonS3
 { [data not shown]
 * STATE: PERFORM => DONE handle 0x60002de60; line 1565 (connection #0)
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
 * Closing connection 0

Выполнение этой команды в терминале OS X из той же подсети дает в основном тот же вывод, за исключением того, что я получаю 200 для запроса http/1.1.

Так почему бы мне получить 200 для Mac, но 400 для cygwin в Windows? Я пытался устранить другие потенциальные переменные, но Cygwin на этой машине не получает 200. Я могу вам сказать, что отредактированный URL-адрес в cygwin совпадает с URL-адресом в выводе команды heroku и таким же в Mac, насколько я вижу, за исключением ключа доступа AWS. Не понимаю, почему они будут другими?

Почему это было бы иначе?

Для справки это мой ресурс.

1 ответ1

0

Это должно было сработать, но единственный способ выполнить это - пропустить оценку команды heroku и просто скопировать вставить URL-адрес И ТОЛЬКО если я заключил URL в одинарные кавычки.

curl -o latest.dump ' https://example.com/reallyLongAndUglyUrl '

Причина, по которой он работает в OS X, заключается в том, что вывод очень длинный и не портится. Но в cygwin это все равно делают, потому что я использую команду heroku.bat для получения выходных данных. Это накладывает ограничения на Windows, то есть добавляет возврат каретки и т.д. К очень длинной строке, которая разбивает URL. Другая подсказка в том, что curl возвращает ошибку 400, которая указывает на ложный URL. Исправление состоит в том, чтобы направить вывод в программу dos2unix и curl отвечает так, как должно.

curl -o latest.dump heroku.bat pgbackups:url | dos2unix и счастье царит.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .