ขด bails ในการดาวน์โหลดใน cygwin แต่ไม่ได้ OS x


0

ฉันพยายามดาวน์โหลดสำเนา postgresql db จาก Amazon S3 ใน cygwin แต่มันให้ผลเป็นศูนย์ทั้งกระดานให้ไฟล์ที่ไร้ประโยชน์ นี่คือคำสั่ง curl ของฉัน:

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

ซึ่งให้ผลตอบแทน: * สถานะ: INIT => CONNECT จัดการ 0x60002de60; บรรทัด 1011 (การเชื่อมต่อ # -5000) * ไม่พบชื่อโฮสต์ในแคช DNS * กำลังลอง 54.231.1.232 ... * เพิ่มหมายเลขอ้างอิง: conn: 0x600069f80 * เพิ่มหมายเลขอ้างอิง: ส่ง: 0 * กำลังเพิ่มหมายเลขอ้างอิง: 0 * Curl_addHandleToPipeline: ความยาว: 1 * 0x60002de60 เป็นที่ส่งหัวท่อ! * - คอน 0 (0x600069f80) send_pipe: 1, recv_pipe: 0 * สถานะ: CONNECT => WAITCONNECT จัดการ 0x60002de60; บรรทัดที่ 1058 (การเชื่อมต่อ # 0)% รวม% ที่ได้รับ% Xferd เวลาความเร็วเฉลี่ยเวลาเวลาปัจจุบันปริมาณที่อัพโหลดอัพโหลดรวมที่ใช้ไปทางซ้ายความเร็ว 0 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, สวัสดีลูกค้า (1):} [ไม่แสดงข้อมูล] * SSLv3 , TLS handshake, เสร็จสิ้น (20):} [ไม่แสดงข้อมูล] * SSLv3, เปลี่ยนรหัส TLS, สวัสดีลูกค้า (1): {[ไม่แสดงข้อมูล] * SSLv3, การจับมือ TLS เสร็จแล้ว (20): {[ไม่แสดงข้อมูล] * การเชื่อมต่อ SSL โดยใช้ AES128-SHA * ใบรับรองเซิร์ฟเวอร์: ทำซ้ำ * ยืนยันใบรับรอง SSL แล้ว * STATE: PROTOCONNECT => จัดการกับ 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 redacted url ใน cygwin ตรงกับ url ในผลลัพธ์คำสั่ง heroku และ mac เดียวกันเท่าที่ฉันทำได้ ดูยกเว้นรหัสการเข้าถึง AWS ไม่เห็นทำไมพวกเขาจะแตกต่างกันอย่างไร

ทำไมถึงแตกต่างกัน?

สำหรับการอ้างอิงของฉันนี้เป็นทรัพยากร

คำตอบ:


0

สิ่งนี้ควรใช้งานได้ แต่วิธีเดียวที่จะทำงานคือข้ามการประเมินคำสั่ง heroku และเพิ่งคัดลอกวางเอาต์พุต url และเฉพาะถ้าฉันใส่ URL ในเครื่องหมายคำพูดเดี่ยว

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

เหตุผลที่ใช้งานได้ใน OS X เป็นเพราะเอาต์พุตมีความยาวมากและไม่ได้รับการ munged แต่มันถูก munged ใน cygwin เพราะฉันใช้คำสั่ง heroku.bat เพื่อรับเอาต์พุต นั่นคือข้อ จำกัด ของ Windows - กล่าวคือมันเพิ่มการขึ้นบรรทัดใหม่กลับไปยังบรรทัดที่ยาวมากซึ่งทำให้ URL แตก เบาะแสอื่น ๆ คือ curl ส่งกลับข้อผิดพลาด 400 ซึ่งบ่งชี้ URL ที่ munged การแก้ไขคือไปป์เอาต์พุตไปยังโปรแกรม dos2unix และ curl ตอบสนองตามที่ควรจะเป็น

curl -o latest.dump heroku.bat pgbackups:url | dos2unixและรัชกาลความสุข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.