cygwin에서 다운로드할 때 컬 보석금이 나오지만 OS X에서는 보석금이 나오지 않습니다.

cygwin에서 다운로드할 때 컬 보석금이 나오지만 OS X에서는 보석금이 나오지 않습니다.

Cygwin의 Amazon S3에서 postgresql db 복사본을 다운로드하려고 합니다. 그러나 전반적으로 0이 생성되어 쓸모없는 파일이 생성됩니다. 이것은 내 컬 명령입니다.

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

결과는 다음과 같습니다. * STATE: INIT => CONNECT 핸들 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 핸들 0x60002de60; 회선 1058(연결 #0) % 총 수신 % % Xferd 평균 속도 시간 시간 시간 현재 Dload 업로드 총 소비 왼쪽 속도 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 핸들 0x60002de60; 라인 1171(연결 #0) * SSLv3, TLS 핸드셰이크, 서버 안녕하세요(2): { [데이터 표시되지 않음] * SSLv3, TLS 핸드셰이크, CERT(11): { [데이터 표시되지 않음] * SSLv3, TLS 핸드셰이크, 서버 완료됨 (14): { [데이터 표시되지 않음] * SSLv3, TLS 핸드셰이크, 클라이언트 키 교환 (16): } [데이터 표시되지 않음] * SSLv3, TLS 암호 변경, 클라이언트 hello (1): } [데이터 표시되지 않음] * SSLv3 , TLS 핸드셰이크, 완료됨(20): } [데이터 표시되지 않음] * SSLv3, TLS 암호 변경, 클라이언트 안녕하세요(1): { [데이터 표시되지 않음] * SSLv3, TLS 핸드셰이크, 완료됨(20): { [데이터가 표시되지 않음 ] * AES128-SHA를 사용한 SSL 연결 * 서버 인증서: 수정됨 * SSL 인증서 확인이 완료되었습니다. * 상태: PROTOCONNECT => 0x60002de60을 처리하십시오. 라인 1190(연결 #0)

GET /hkpgbackups/[이메일 보호됨]/b007.dump?AWSA 수정된 사용자 에이전트: 컬/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 터미널에서 이 명령을 실행하면 http/1.1 요청에 대해 200을 얻는다는 점을 제외하면 거의 동일한 출력이 생성됩니다.

그렇다면 왜 Mac에서는 200을 얻지만 Windows에서는 cygwin에서는 400을 얻습니까? 다른 잠재적인 변수를 제거하려고 시도했지만 이 컴퓨터의 cygwin은 200을 얻지 못합니다. cygwin의 수정된 URL이 heroku 명령 출력의 URL과 일치하고 가능한 한 Mac에서도 동일하다고 말할 수 있습니다. AWS 액세스 키를 제외하고 참조하세요. 왜 다른지 모르시나요?

이것이 왜 다를까요?

참고로 이건 내꺼야자원.

답변1

이것이 효과가 있었어야 했지만 실행되는 유일한 방법은 heroku 명령 평가를 건너뛰고 URL 출력을 복사하여 붙여넣는 것입니다. 그리고 URL을 작은따옴표로 묶은 경우에만 가능합니다.

컬 -o 최신.dump 'https://example.com/reallyLongAndUglyUrl'

OS X에서 작동하는 이유는 출력이 매우 길고 잘리지 않기 때문입니다. 그러나 출력을 얻기 위해 heroku.bat 명령을 사용하고 있기 때문에 cygwin에서는 문제가 발생합니다. 이는 Windows 제약 조건을 부과합니다. 즉, URL을 분리하는 매우 긴 줄에 캐리지 리턴 등을 추가합니다. 또 다른 단서는 컬이 URL이 삭제되었음을 나타내는 400 오류를 반환한다는 것입니다. 해결 방법은 출력을 dos2unix 프로그램으로 파이프하고 컬이 예상대로 응답하는 것입니다.

컬 -o 최신.dump heroku.bat pgbackups:url | dos2unix그리고 행복이 지배합니다.

관련 정보