wget ยูทิลิตี้นี้เป็นตัวเลือกที่ดีที่สุดในการดาวน์โหลดไฟล์จากอินเทอร์เน็ต wget สามารถรองรับสถานการณ์การดาวน์โหลดที่ซับซ้อนทั้งหมดได้ รวมถึงการดาวน์โหลดไฟล์ขนาดใหญ่ การดาวน์โหลดแบบเรียกซ้ำ การดาวน์โหลดแบบไม่โต้ตอบ การดาวน์โหลดไฟล์หลายไฟล์ ฯลฯ
ในบทความนี้ เราจะมาทบทวนวิธีใช้ wget สำหรับสถานการณ์การดาวน์โหลดที่หลากหลายโดยใช้ตัวอย่าง wget ที่ยอดเยี่ยม 15 ตัวอย่าง
1. ดาวน์โหลดไฟล์เดี่ยวด้วย wget
ตัวอย่างต่อไปนี้ดาวน์โหลดไฟล์เดียวจากอินเทอร์เน็ตและจัดเก็บไว้ในไดเร็กทอรีปัจจุบัน
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
ขณะดาวน์โหลดจะแสดงแถบความคืบหน้าพร้อมข้อมูลต่อไปนี้:
- %อายุการดาวน์โหลดเสร็จสิ้น (เช่น 31% ดังที่แสดงด้านล่าง)
- จำนวนไบต์ที่ดาวน์โหลดทั้งหมดจนถึงตอนนี้ (เช่น 1,213,592 ไบต์ดังที่แสดงด้านล่าง)
- ความเร็วในการดาวน์โหลดปัจจุบัน (เช่น 68.2K/s ดังที่แสดงด้านล่าง)
- เวลาที่เหลือในการดาวน์โหลด (เช่น เวลาประมาณ 34 วินาทีดังที่แสดงด้านล่าง)
อยู่ระหว่างการดาวน์โหลด:
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Saving to: `strx25-0.9.2.1.tar.bz2.1' 31% [=================> 1,213,592 68.2K/s eta 34s
ดาวน์โหลดเสร็จสิ้น:
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Saving to: `strx25-0.9.2.1.tar.bz2' 100%[======================>] 3,852,374 76.8K/s in 55s 2009-09-25 11:15:30 (68.7 KB/s) - `strx25-0.9.2.1.tar.bz2' saved [3852374/3852374]
2. ดาวน์โหลดและจัดเก็บด้วยชื่อไฟล์อื่นโดยใช้ wget -O
ตามค่าเริ่มต้น wget จะเลือกชื่อไฟล์จากคำสุดท้ายหลังเครื่องหมายทับสุดท้าย ซึ่งอาจไม่เหมาะสมเสมอไป
ผิด: ตัวอย่างต่อไปนี้จะดาวน์โหลดและจัดเก็บไฟล์ชื่อ:download_script.php?src_id=7701
$ wget http://www.vim.org/scripts/download_script.php?src_id=7701
แม้ว่าไฟล์ที่ดาวน์โหลดจะอยู่ในรูปแบบ zip แต่ไฟล์นั้นจะถูกจัดเก็บไว้ในไฟล์ดังที่แสดงด้านล่าง
$ ls download_script.php?src_id=7701
ถูกต้อง: เพื่อแก้ไขปัญหานี้ เราสามารถระบุชื่อไฟล์เอาต์พุตได้โดยใช้ตัวเลือก -O เป็น:
$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
3. ระบุความเร็วในการดาวน์โหลด / อัตราการดาวน์โหลดโดยใช้ wget –limit-rate
ขณะดำเนินการ wget ตามค่าเริ่มต้นจะพยายามใช้แบนด์วิดท์เต็มที่เป็นไปได้ สิ่งนี้อาจไม่เป็นที่ยอมรับเมื่อคุณดาวน์โหลดไฟล์ขนาดใหญ่บนเซิร์ฟเวอร์ที่ใช้งานจริง ดังนั้น เพื่อหลีกเลี่ยงไม่ให้เราสามารถจำกัดความเร็วในการดาวน์โหลดได้โดยใช้อัตราจำกัดดังที่แสดงด้านล่าง
ในตัวอย่างต่อไปนี้ ความเร็วในการดาวน์โหลดถูกจำกัดไว้ที่ 200k
$ wget --limit-rate=200k http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
4. ทำการดาวน์โหลดที่ไม่สมบูรณ์ต่อโดยใช้ wget -c
เริ่มการดาวน์โหลดใหม่ซึ่งหยุดกลางคันโดยใช้ตัวเลือก wget -c ดังที่แสดงด้านล่าง
$ wget -c http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
สิ่งนี้มีประโยชน์มากเมื่อคุณเริ่มดาวน์โหลดไฟล์ขนาดใหญ่มากซึ่งถูกขัดจังหวะกลางคัน แทนที่จะเริ่มการดาวน์โหลดทั้งหมดอีกครั้ง คุณสามารถเริ่มการดาวน์โหลดจากจุดที่ถูกขัดจังหวะได้โดยใช้ตัวเลือก -c
หมายเหตุ: หากการดาวน์โหลดหยุดกลางคัน เมื่อคุณเริ่มการดาวน์โหลดใหม่อีกครั้งโดยไม่มีตัวเลือก -c wget จะเพิ่ม .1 ต่อท้ายชื่อไฟล์โดยอัตโนมัติ เนื่องจากไฟล์ที่มีชื่อก่อนหน้านี้มีอยู่แล้ว หากมีไฟล์ที่มี .1 อยู่แล้ว ไฟล์นั้นจะดาวน์โหลดไฟล์ที่มี .2 ต่อท้าย
5. ดาวน์โหลดในพื้นหลังโดยใช้ wget -b
หากต้องการดาวน์โหลดจำนวนมาก ให้ใส่การดาวน์โหลดในพื้นหลังโดยใช้ตัวเลือก wget -b ดังที่แสดงด้านล่าง
$ wget -b http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Continuing in background, pid 1984. Output will be written to `wget-log'.
มันจะเริ่มต้นการดาวน์โหลดและแจ้งเชลล์ให้คุณทราบ คุณสามารถตรวจสอบสถานะการดาวน์โหลดได้ตลอดเวลาโดยใช้ tail -f ดังที่แสดงด้านล่าง
$ tail -f wget-log Saving to: `strx25-0.9.2.1.tar.bz2.4' 0K .......... .......... .......... .......... .......... 1% 65.5K 57s 50K .......... .......... .......... .......... .......... 2% 85.9K 49s 100K .......... .......... .......... .......... .......... 3% 83.3K 47s 150K .......... .......... .......... .......... .......... 5% 86.6K 45s 200K .......... .......... .......... .......... .......... 6% 33.9K 56s 250K .......... .......... .......... .......... .......... 7% 182M 46s 300K .......... .......... .......... .......... .......... 9% 57.9K 47s
นอกจากนี้ อย่าลืมอ่านบทความ Multitail ก่อนหน้าของเราเกี่ยวกับวิธีใช้คำสั่ง tail อย่างมีประสิทธิภาพเพื่อดูไฟล์หลายไฟล์
6. Mask User Agent และแสดง wget เหมือนเบราว์เซอร์ที่ใช้ wget –user-agent
บางเว็บไซต์อาจไม่อนุญาตให้คุณดาวน์โหลดหน้าเว็บโดยระบุว่าตัวแทนผู้ใช้ไม่ใช่เบราว์เซอร์ ดังนั้นคุณจึงสามารถปกปิดตัวแทนผู้ใช้ได้โดยใช้ตัวเลือก –user-agent และแสดง wget เหมือนเบราว์เซอร์ดังที่แสดงด้านล่าง
$ wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" URL-TO-DOWNLOAD
7. ทดสอบ URL ดาวน์โหลดโดยใช้ wget –spider
เมื่อคุณจะทำการดาวน์โหลดตามกำหนดเวลา คุณควรตรวจสอบว่าการดาวน์โหลดจะเกิดขึ้นตามปกติหรือไม่ตามเวลาที่กำหนด หากต้องการทำเช่นนั้น ให้คัดลอกบรรทัดจากกำหนดการทุกประการ จากนั้นเพิ่มตัวเลือก –spider เพื่อตรวจสอบ
$ wget --spider DOWNLOAD-URL
หาก URL ที่ให้มาถูกต้อง มันจะขึ้นว่า
$ wget --spider download-url Spider mode enabled. Check if remote file exists. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Remote file exists and could contain further links, but recursion is disabled -- not retrieving.
เพื่อให้แน่ใจว่าการดาวน์โหลดจะสำเร็จตามเวลาที่กำหนด แต่เมื่อคุณให้ URL ผิด คุณจะได้รับข้อผิดพลาดดังต่อไปนี้
$ wget --spider download-url Spider mode enabled. Check if remote file exists. HTTP request sent, awaiting response... 404 Not Found Remote file does not exist -- broken link!!!
คุณสามารถใช้ตัวเลือกสไปเดอร์ในสถานการณ์ต่อไปนี้:
- ตรวจสอบก่อนกำหนดเวลาการดาวน์โหลด
- การตรวจสอบว่าเว็บไซต์พร้อมใช้งานหรือไม่ในช่วงเวลาที่กำหนด
- ตรวจสอบรายการหน้าจากบุ๊กมาร์กของคุณ และดูว่ายังมีหน้าใดบ้าง
8. เพิ่มจำนวนความพยายามในการลองใหม่ทั้งหมดโดยใช้ wget –tries
หากการเชื่อมต่ออินเทอร์เน็ตมีปัญหา และหากไฟล์ดาวน์โหลดมีขนาดใหญ่ ก็มีโอกาสที่การดาวน์โหลดจะล้มเหลว ตามค่าเริ่มต้น เราจะลองอีกครั้ง 20 ครั้งเพื่อให้การดาวน์โหลดสำเร็จ
หากจำเป็น คุณสามารถเพิ่มความพยายามในการลองอีกครั้งโดยใช้ตัวเลือก –tries ดังที่แสดงด้านล่าง
$ wget --tries=75 DOWNLOAD-URL
9. ดาวน์โหลดไฟล์หลายไฟล์ / URL โดยใช้ Wget -i
ขั้นแรก เก็บไฟล์ดาวน์โหลดหรือ URL ทั้งหมดในไฟล์ข้อความเป็น:
$ cat > download-file-list.txt URL1 URL2 URL3 URL4
จากนั้น ให้ download-file-list.txt เป็นอาร์กิวเมนต์เพื่อใช้ตัวเลือก -i ดังที่แสดงด้านล่าง
$ wget -i download-file-list.txt
10. ดาวน์โหลดเว็บไซต์แบบเต็มโดยใช้ wget –mirror
ต่อไปนี้เป็นบรรทัดคำสั่งที่คุณต้องการดำเนินการเมื่อคุณต้องการดาวน์โหลดเว็บไซต์ฉบับเต็มและทำให้พร้อมสำหรับการดูในท้องถิ่น
$ wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
- –mirror :เปิดตัวเลือกที่เหมาะสมสำหรับการมิเรอร์
- -p :ดาวน์โหลดไฟล์ทั้งหมดที่จำเป็นในการแสดงหน้า HTML ที่กำหนดอย่างเหมาะสม
- –convert-links :หลังจากดาวน์โหลด ให้แปลงลิงก์ในเอกสารเพื่อการดูในท้องถิ่น
- -P ./LOCAL-DIR :บันทึกไฟล์และไดเร็กทอรีทั้งหมดไปยังไดเร็กทอรีที่ระบุ
11. ปฏิเสธไฟล์บางประเภทขณะดาวน์โหลดโดยใช้ wget –reject
คุณพบเว็บไซต์ที่เป็นประโยชน์ แต่ไม่ต้องการดาวน์โหลดภาพ คุณสามารถระบุสิ่งต่อไปนี้ได้
$ wget --reject=gif WEBSITE-TO-BE-DOWNLOADED
12. บันทึกข้อความลงในไฟล์บันทึกแทนการใช้ stderr โดยใช้ wget -o
เมื่อคุณต้องการให้บันทึกถูกเปลี่ยนเส้นทางไปยังไฟล์บันทึกแทนเทอร์มินัล
$ wget -o download.log DOWNLOAD-URL
13. ออกจากการดาวน์โหลดเมื่อเกินขนาดที่กำหนด โดยใช้ wget -Q
เมื่อคุณต้องการหยุดดาวน์โหลดเมื่อมีขนาดเกิน 5 MB คุณสามารถใช้บรรทัดคำสั่ง wget ต่อไปนี้ได้
$ wget -Q5m -i FILE-WHICH-HAS-URLS
หมายเหตุ: โควต้านี้จะไม่มีผลเมื่อคุณดาวน์โหลด URL เดียว โดยไม่คำนึงถึงขนาดโควต้า ทุกอย่างจะถูกดาวน์โหลดเมื่อคุณระบุไฟล์เดียว โควต้านี้ใช้ได้กับการดาวน์โหลดแบบเรียกซ้ำเท่านั้น
14. ดาวน์โหลดเฉพาะไฟล์บางประเภทโดยใช้ wget -r -A
คุณสามารถใช้สิ่งนี้ในสถานการณ์ต่อไปนี้:
- ดาวน์โหลดภาพทั้งหมดจากเว็บไซต์
- ดาวน์โหลดวิดีโอทั้งหมดจากเว็บไซต์
- ดาวน์โหลดไฟล์ PDF ทั้งหมดจากเว็บไซต์
$ wget -r -A.pdf http://url-to-webpage-with-pdfs/
15. ดาวน์โหลด FTP ด้วย wget
คุณสามารถใช้ wget เพื่อดาวน์โหลด FTP ดังที่แสดงด้านล่าง
ดาวน์โหลด FTP แบบไม่ระบุชื่อโดยใช้ Wget
$ wget ftp-url
ดาวน์โหลด FTP โดยใช้ wget พร้อมการตรวจสอบชื่อผู้ใช้และรหัสผ่าน
$ wget --ftp-user=USERNAME --ftp-password=PASSWORD DOWNLOAD-URL
หากคุณชอบบทความนี้ โปรดบุ๊กมาร์กบทความด้วยคำว่า delicious หรือ Stumble ป>