wget เริ่มดาวน์โหลดจากนั้นหยุด“ ไม่สามารถเขียนถึง”


13

ฉันใช้ wget เพื่อทำมิรเรอร์ไฟล์บางไฟล์จากเซิร์ฟเวอร์หนึ่งไปยังอีก ฉันใช้คำสั่งต่อไปนี้:

wget -x -N -i http://domain.com/filelist.txt

-x = เพราะฉันต้องการเก็บโครงสร้างไดเรกทอรี

-N = การประทับเวลาเพื่อรับไฟล์ใหม่เท่านั้น

-i = หากต้องการดาวน์โหลดรายการไฟล์จากไฟล์ภายนอกหนึ่งรายการในแต่ละบรรทัด

ไฟล์ขนาดเล็กเช่นหนึ่งฉันกำลังทดสอบว่าดาวน์โหลด 326kb ใหญ่ใช้ได้ดี

แต่อันอื่นที่ดาวน์โหลดได้ 5gb เพียง 203mb แล้วหยุด (มันจะให้ 203mb หรือใช้เวลาเพียงไม่กี่กิโลไบต์)

ข้อความแสดงข้อผิดพลาดที่แสดงคือ:

ไม่สามารถเขียนไปยัง 'path / to / file.zipâ

(ฉันไม่แน่ใจว่าทำไมมีตัวละครแปลก ๆ ทั้งก่อนและหลังฉันใช้ Putty ใน Windows และนี่อาจจะใช่หรือไม่มีอะไรเกี่ยวข้องกับเรื่องนี้ดังนั้นฉันจึงทิ้งพวกมันไว้ฉันไม่เข้าใจเลย)

การตอบสนองแบบเต็มมีดังนี้: (ฉันได้เปลี่ยนเส้นทาง, ip และชื่อโดเมน)

--2012-08-31 12: 41: 19-- http://domain.com/filelist.txt กำลังแก้ไข domain.com ... MY_IP กำลังเชื่อมต่อกับ domain.com | MY_IP |: 80 ... เชื่อมต่อ ส่งคำขอ HTTP แล้วกำลังรอการตอบกลับ ... 200 ตกลงความยาว: 161 [ข้อความ / ข้อความธรรมดา] ไฟล์เซิร์ฟเวอร์ไม่มีอะไรใหม่กว่าไฟล์ในท้องถิ่นâชื่อโดเมน / filelist.txtâ

--2012-08-31 12: 41: 19-- http://domain.com/path/to/file.zip กำลังเชื่อมต่อกับ domain.com | MY_IP |: 80 ... เชื่อมต่อ ส่งคำขอ HTTP แล้วกำลังรอการตอบกลับ ... 200 ตกลงความยาว: 5502192869 (5.1G) [ใบสมัคร / zip] ขนาดไม่ตรงกัน (ในท้องถิ่น 213004288) - การดึงข้อมูล

--2012-08-31 12: 41: 19-- http://domain.com/path/to/file.zip กำลังเชื่อมต่อกับ domain.com | MY_IP |: 80 ... เชื่อมต่อ ส่งคำขอ HTTP แล้วกำลังรอการตอบกลับ ... 200 ตกลงความยาว: 5502192869 (5.1G) [ใบสมัคร / zip] กำลังบันทึกไปที่: โดเมน / พา ธ / ไปยัง / file.zipâ

3% [====>
] 213,003,412 8.74M / s ใน 24 วินาที

ไม่สามารถเขียนถึง "โดเมน" / path / to / file.zipâ

ดูเหมือนว่าจะไม่สร้างความแตกต่างใด ๆ หากไดเรกทอรีเส้นทางนั้นมีอยู่แล้วหรือถูกสร้างขึ้นในทันที

ใครบ้างมีความคิดว่าทำไมมันหยุดและฉันจะแก้ไขได้อย่างไร

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมากที่สุด

แก้ไข: ฉันได้ลองเพียงแค่ wget ไม่มีไฟล์อินพุตและเปลี่ยนชื่อไฟล์ เวลานี้มันดาวน์โหลดน้อยกว่า 3gb แล้วให้เหมือนกันไม่สามารถเขียนข้อผิดพลาด

wget -x -N http://domain.com/path/to/file.zip -O files/bigfile.zip

คุณมีตัวละครพิเศษในเส้นทางของคุณหรือไม่?
JMeterX

มันทำงานได้อย่างที่คาดไว้ถ้าคุณพิมพ์ "cd / tmp &&" ก่อนคำสั่ง

ดิสก์ของคุณเต็มหรือไม่
เจนนี่ D

ดิสก์ไม่เต็มและไม่มีอักขระพิเศษ แม้ว่าความยาวของพา ธ คือ 87 ตัวอักษร แต่ Googling บางตัวแสดงปัญหาบางอย่างเกี่ยวกับชื่อแบบยาว (ชื่อไฟล์มีเพียง 29 ตัวอักษรเท่านั้น) ซึ่งล้มเหลวในลักษณะเดียวกันใน tmp
John Mellor

@FreezeDriedPop ตั้งแต่ชื่อไฟล์ของคุณจะค่อนข้างยาวคุณอาจมีการเปลี่ยนแปลงโดยใช้-Oตัวเลือกเพื่อให้wget -O test.zip http://link
JMeterX

คำตอบ:


7

คุณจะได้รับข้อผิดพลาดนี้หากคุณออกจากพื้นที่ดิสก์ รัน df แล้วคุณจะเห็นว่าไดเรกทอรีที่คุณเขียนนั้นอยู่ที่ 100% หรือไม่


4

มันเป็นปัญหากับ URL ที่ยาว ฉันก็เผชิญกับมันเช่นกัน ดังนั้นฉันใช้ bit.ly และย่อ URL ทำงานเหมือนเครื่องราง!


คุณแน่ใจไหม? ดูเหมือนว่าไม่น่าเป็นไปได้ที่การดาวน์โหลดจะเริ่มต้นและหยุดลงในบางช่วงเมื่อปัญหาเกี่ยวข้องกับ URL ซึ่งจะใช้เมื่อเริ่มต้นธุรกรรมเท่านั้น
เฟลิกซ์แฟรงค์

ใช่. ผมมีปัญหาเดียวกัน. ลองมัน.
Namchester

ฉันคิดว่าปัญหาคือกับ linux ไม่สามารถรับรู้ URL ที่ยาว
Namchester

ฉันคิดว่าคุณหมายถึงเปลือก? เพราะเคอร์เนลนั้นไร้เดียงสาที่สุดของความล้มเหลวนี้ แม้แต่เชลล์ก็ไม่น่าเป็นไปได้ แต่ถ้าเป็นเช่นนั้นอีกครั้งการดาวน์โหลดก็ไม่สามารถเริ่มต้นได้ - เชลล์จะผิดพลาดก่อนที่จะฟอร์กwgetกระบวนการที่คาดหวัง
เฟลิกซ์แฟรงค์

1
สำหรับฉันมันเป็นสตริงข้อความค้นหาใน url -wget http://dltr.org/skin/frontend/lowes/default/css/custom.css?001
Damodar Bashyal

1

ฉันเพียงแค่เพิ่ม-ไปยังtarคำสั่งหลังจากท่อหลังจาก wget

ฉันมี

wget https://example.com/path/to/file.tar.gz -O -|tar -xzf -C /path/to/file

จากนั้นเปลี่ยนเป็น

wget https://example.com/path/to/file.tar.gz -O - | tar -xzvf - -C /path/to/file

อย่าลืม `- 'สำหรับ tar เช่นกัน :)
Shital Shah

0

หากเริ่มบันทึกไฟล์ขนาดใหญ่และเขียนขนาด 203 MB ฉันจะสงสัยว่าคุณมีระบบไฟล์แบบเต็มเมื่อสิ้นสุดการรับหรือการเชื่อมต่อเครือข่ายหมดเวลา

คุณสามารถใช้ df -h บนเซิร์ฟเวอร์ที่รับเพื่อดูว่าระบบไฟล์เต็ม

ลองดูคำตอบนี้สำหรับปัญหาการหมดเวลาด้วย wget:

/programming/2291524/does-wget-timeout

และลองถ่ายโอนอีกครั้งที่ล้มเหลวและไม่ใช้ตัวเลือก -N timestamp

และรัน ulimit -a เพื่อดูว่ามีการ จำกัด ขนาดไฟล์บนเซิร์ฟเวอร์ที่รับสัญญาณหรือไม่


ฉันไม่มีความเชี่ยวชาญ แต่ฉันคิดว่ามันใช้งาน CentOS 6 และฉันไม่แน่ใจว่าจะตรวจสอบการแสดงตัวละครได้อย่างไร แม้ว่ามันจะเริ่มดาวน์โหลดและดาวน์โหลดไฟล์ขนาดเล็กอื่น ๆ ได้ดี แต่ฉันไม่คิดว่ามันจะฟังดูเหมือนเป็นปัญหา
John Mellor

ไฟล์ที่ดาวน์โหลดสำเร็จจะมีตัวละครตลกในชื่อของพวกเขาหรือไม่
DisgruntledUser

ไม่ไม่มีตัวละครแปลก ๆ นอกจากว่าจุดเป็นตัวละครที่แปลกเช่น "megapack_4.11.zip" แต่อีกครั้งฉันลองมันด้วยชื่อ "bigfile.zip" และปัญหาเดียวกันก็เกิดขึ้น
John Mellor

บางทีมันอาจเป็นเพียงแค่ผงสำหรับอุดรูที่ตั้งค่าเป็นตัวแทนถ่านที่แตกต่างจาก UTF-8
DisgruntledUser

ใช่ฉันไม่คิดว่าเป็นปัญหาฉันเพิ่งพูดถึงว่าฉันคัดลอกและวางจาก Putty ปัญหาจริงที่ไม่สามารถเขียนได้
John Mellor


0

ฉันกำลังทำสิ่งที่คล้ายกับ:

wget -x -N -i http://domain.com/filelist.txt

ฉันได้รับ:

--2016-12-09 07:44:23--  https://www.example.com/dir/details?abc=123&def=456
Resolving www.example.com (www.example.com)... 1.2.3.4
Connecting to www.example.com (www.example.com)|1.2.3.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
details?abc=123&def=456: No such file or directory

Cannot write to ‘details?abc=123&def=456’ (Success).

ในไฟล์ filelist.txt ที่เทียบเท่าของฉันฉันมี URL เช่น:

https://www.example.com/dir/details?abc=123&def=456

เพื่อแก้ปัญหาฉันพยายามสร้างไฟล์เดียวกัน wget พยายามสร้าง:

touch "details?abc=123&def=456"
touch: cannot touch ‘details?abc=123&def=456’: No such file or directory

Viola! ดูเหมือนว่า?เป็นปัญหา แต่วิธีปฏิบัติที่ดีคือการลบอักขระพิเศษทั้งหมดออกจากชื่อไฟล์ลองจินตนาการว่า&จะทำอย่างไรหากไม่รอด


0

ฉันได้รับข้อผิดพลาดเดียวกันกับคำสั่งนี้:

sudo wget -O - https://nightly.odoo.com/odoo.key | apt-key add -

ปัญหาคือ sudo สำหรับคำสั่งที่สองและฉันแก้ไขด้วย:

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