วิธีการอนุญาตให้ wget เขียนทับไฟล์


9

การใช้wgetคำสั่งฉันจะอนุญาต / สั่งให้เขียนทับไฟล์ในเครื่องของฉันทุกครั้งได้อย่างไรโดยไม่คำนึงถึงจำนวนครั้งที่ฉันเรียกใช้

สมมติว่าฉันต้องการดาวน์โหลดไฟล์จากที่ตั้ง: http: //server/folder/file1.html

ที่นี่เมื่อใดก็ตามที่ฉันบอกว่าwget http://server/folder/file1.htmlฉันต้องการfile1.htmlให้มันถูกเขียนทับในระบบท้องถิ่นของฉันโดยไม่คำนึงถึงเวลาที่มีการเปลี่ยนแปลงดาวน์โหลดแล้ว ฯลฯ ความตั้งใจของฉัน / กรณีการใช้ที่นี่คือเมื่อฉันโทร wget ฉันมั่นใจมากว่าฉันต้องการ เพื่อแทนที่ / เขียนทับไฟล์ที่มีอยู่

ฉันได้ลองใช้ตัวเลือกต่อไปนี้แล้ว แต่ตัวเลือกแต่ละตัวนั้นมีวัตถุประสงค์ / ตั้งใจเพื่อวัตถุประสงค์อื่น

  1. -nc => - ไม่มีการอุดตัน
  2. -N => เปิดการประทับเวลา
  3. -r => เปิดการเรียกซ้ำ

คำตอบ:


7
wget -q http://www.whatever.com/filename.txt -O /path/filename.txt 

-q เป็นโหมดเงียบเพื่อให้คุณสามารถโยนมันลงใน cron โดยไม่มีเอาต์พุตใด ๆ จากคำสั่ง


ไม่มีตัวเลือกโดยตรงในwgetคำสั่งที่ทำสิ่งนี้โดยที่ฉันไม่ได้ระบุการใช้อย่างชัดเจน-O filename?
Gnanam

3
ดูเหมือนว่าจะไม่มีวิธีบังคับให้เขียนทับทุกไฟล์เมื่อดาวน์โหลดไฟล์โดยใช้ wget อย่างไรก็ตามการใช้ตัวเลือก -N สามารถบังคับให้ดาวน์โหลดและเขียนทับไฟล์ที่ใหม่กว่าได้ wget -N จะเขียนทับไฟล์ต้นฉบับหากขนาดหรือเวลาประทับเปลี่ยนแปลง
aleroot

ไม่จริง. กำหนดทิศทางเอาต์พุตของคำสั่งลงใน stdout และไพพ์ไปที่ไฟล์: wget -q $ urlYouNeedToGrap> $ fileYouWantToOverwriteEverytime
rasjani


4

ใช้curlแทนไหม

curl http://server/folder/file1.html > file1.html

ฉันไม่ใช่ผู้เชี่ยวชาญ Linux อะไรคือความแตกต่างพื้นฐานระหว่างwgetและcurl? ฉันแน่ใจว่าคำสั่งแต่ละคำสั่งมีวัตถุประสงค์เพื่อวัตถุประสงค์เฉพาะบางอย่าง
Gnanam

1
@ Gnamam: พวกเขาทับซ้อนกันมากมายในยูทิลิตี้ CLI พื้นฐาน ทั้งสองสามารถทำการเชื่อมต่อ HTTP และบันทึกผลลัพธ์ลงในดิสก์ สำหรับความแตกต่างลองดูที่daniel.haxx.se/docs/curl-vs-wget.html ไม่ว่าการใช้งานด้านบนจะสมบูรณ์หรือไม่ มีเครื่องมืออื่นในพื้นที่ทั่วไปนี้ด้วยเช่นกัน: curl.haxx.se/docs/comparison-table.html
Stu Thompson

ลิงก์ทั้งสองนั้นมีประโยชน์จริง ๆ ที่จะเข้าใจความแตกต่าง
Gnanam

0

ฉันไม่คิดว่าคุณสามารถทำได้เว้นแต่คุณจะดาวน์โหลดไดเรกทอรี (ดังนั้นให้ผ่านแฟล็ก -x) หากคุณรู้ว่าไฟล์คืออะไรคุณสามารถใช้ -O ชื่อไฟล์ได้เช่น:
wget http://yourdomain.com/index.html -O index.html


0

ไม่ได้พิจารณา: wget -r --level=0บางทีคุณอาจจะสามารถทำงานร่วมกับ

ความเป็นไปได้อื่น: curl -Oเขียนทับ (แต่ใช้วิธีอื่นในการเลือกชื่อไฟล์ซึ่งอาจมีหรือไม่มีความสำคัญสำหรับคุณ)


ที่wgetสายไม่ได้จริงๆทำในสิ่งที่ถูกต้องเพราะมันจะสร้างลำดับของไดเรกทอรีย่อย curl -Oในขณะที่ดาวน์โหลดไฟล์อย่างถูกต้องเขียนทับสำเนาที่มีอยู่
sth

0

ทำไมไม่ใส่เสื้อคลุมตัวเล็ก ๆ รอบ wget ในสคริปต์ของคุณ?

สคริปต์สามารถย้ายไฟล์ทั้งหมดไปยังตำแหน่งชั่วคราวจากนั้นไปยังไฟล์ / เว็บเพจระยะไกล

เมื่อสำเร็จแล้วให้ลบไฟล์ในตำแหน่งชั่วคราว เมื่อเกิดความล้มเหลวให้ย้ายไฟล์กลับมาและเกิดข้อผิดพลาด

ไม่มีวิธีง่ายๆในการทำสิ่งที่คุณต้องการโดยใช้เพียงแค่ wget เว้นแต่คุณจะทราบชื่อของไฟล์ทั้งหมดโดยเฉพาะในกรณีนี้ตัวเลือก -O จะช่วยให้คุณบังคับให้ชื่อไฟล์ของไฟล์ที่ดาวน์โหลด

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