หากคุณเคยติดตามบทช่วยสอน Magic Mirror ของเรา คุณจะเห็นว่ามีการใช้คำสั่ง wget เพื่อดาวน์โหลดไฟล์
บทช่วยสอนนี้อธิบายวิธีใช้ wget เครื่องมือบรรทัดคำสั่งสำหรับดาวน์โหลด (get) ไฟล์จากเว็บ ไม่ว่าจะเป็นผ่าน HTTP, HTTPS, FTP หรือ FTPS
ใช้ดาวน์โหลดไฟล์จากอินเทอร์เน็ตจาก Linux shell เรียกใช้จาก Bash scripts ได้ – ใช้งานง่าย หลากหลาย และไม่ต้องการการแทรกแซงจากผู้ใช้หลังเริ่มทำงาน จึงสามารถรันในพื้นหลังได้
ไวยากรณ์
wget [OPTIONS]... [ URLS ]...
โปรดทราบว่า:
- OPTIONS คือรายการตัวเลือกที่ส่งให้โปรแกรมจากตารางด้านล่าง คั่นด้วยช่องว่าง
- URLS คือรายการ URL ที่จะดาวน์โหลด คั่นด้วยช่องว่าง
นี่คือตัวเลือก wget ตามเอกสารอย่างเป็นทางการ:
| ตัวเลือกทั่วไป | |
|---|---|
| -o logfile | บันทึกข้อความทั้งหมดไปที่ logfile ข้อความปกติจะรายงานไปที่ standard error |
| -a logfile | ต่อท้ายที่ logfile เหมือน -o แต่ต่อท้ายแทนการเขียนทับ หาก logfile ไม่มีอยู่ จะสร้างไฟล์ใหม่ |
| -q | ปิดการแสดงผลของ Wget |
| -i file | อ่าน URL จาก file ท้องถิ่นหรือภายนอก หากใช้ฟังก์ชันนี้ ไม่ต้องมี URL บนบรรทัดคำสั่ง |
| -t number | ตั้งจำนวนครั้งลองใหม่เป็น number |
| -c | ดาวน์โหลดต่อไฟล์ที่ดาวน์โหลดไม่ครบ |
| -T seconds | ตั้งค่า network timeout เป็น seconds วินาที |
| -w seconds | รอจำนวน seconds วินาทีระหว่างการดึงไฟล์ |
| –user=user | ตั้งค่า username สำหรับการยืนยันตัวตน HTTP หรือ FTP |
| –password=password | ตั้งค่า password สำหรับการยืนยันตัวตน HTTP หรือ FTP |
| –post-data=string | ส่งคำขอ POST แทน GET พร้อมส่งข้อมูล string ควรเป็นรูปแบบ “key1=value1&key2=value2” |
| -r | เปิดโหมด recursive retrieving |
| -l depth | ระบุระดับความลึกสูงสุดของ recursion ค่าเริ่มต้นคือ 5 |
| -m | เปิดตัวเลือกที่เหมาะกับการ mirroring เปิด recursion และ time-stamping ตั้งค่า recursion depth เป็นอนันต์ และเก็บรายการไดเรกทอรี FTP |
| -p | ดาวน์โหลดไฟล์ทั้งหมดที่จำเป็นสำหรับแสดงหน้า HTML ให้ถูกต้อง รวมถึงรูปภาพ เสียง และ stylesheets ที่อ้างอิง |
ตัวอย่าง
ดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ HTTPS
ดาวน์โหลดไฟล์เดี่ยว การใช้งานพื้นฐาน:
wget https://www.example.com/file.zip
ดาวน์โหลดต่อไฟล์ที่หยุดชะงัก
หากดาวน์โหลดไม่ครบ ให้ดำเนินการต่อด้วยตัวเลือก -c:
wget -c https://www.example.com/file.zip
ดาวน์โหลดจากรายการไฟล์ พร้อมบันทึก log แบบต่อท้าย
หากคุณมีไฟล์ข้อความที่มีรายการ URL ให้ส่งให้ wget โดยตรงและบันทึก log ผลลัพธ์เพื่อตรวจสอบภายหลัง:
wget -a log.txt -i url-list.txt
คุณสามารถใช้ -o เพื่อเขียน log file แบบเขียนทับแทนการต่อท้ายได้
ดาวน์โหลดไฟล์ ลองใหม่ 5 ครั้ง แบบเงียบๆ
ลองดาวน์โหลดใหม่ และไม่แสดงความคืบหน้าในเทอร์มินัล:
wget -t 5 -q https://www.example.com/file.zip
ดาวน์โหลดจากรายการไฟล์ รอ 6 วินาทีระหว่างแต่ละไฟล์ timeout 12 วินาที
รอระหว่างดาวน์โหลดเพื่อลดโหลดเซิร์ฟเวอร์ และยกเลิกหากเซิร์ฟเวอร์ไม่ตอบสนองภายใน 12 วินาที:
wget -w 6 -T 12 -i url-list.txt
ดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ FTPS ที่ต้องการ Username และ Password
ดาวน์โหลดจาก FTPS server ด้วย username bob และ password boat:
wget --user=bob --password=boat ftps://ftp.example.com/file.zip
ดาวน์โหลดไฟล์ด้วยคำขอ POST
ส่งคำขอ HTTP POST แทน GET เริ่มต้น พร้อมส่งข้อมูล สามารถส่งสตริงว่างด้วย –post-data:
wget --post-data="postcode=2000&country=Australia" https://www.example.com/file.zip
ในตัวอย่างนี้ เราส่งข้อมูล POST 2 ชิ้น คือ postcode และ country
หากทำคำขอ POST บ่อย cURL อาจเหมาะสมกว่า
ดาวน์โหลดไดเรกทอรีแบบ Recursive ผ่าน FTP พร้อมจำกัดความลึก
การดาวน์โหลด recursive จะดาวน์โหลดเนื้อหาโฟลเดอร์และซับโฟลเดอร์ ตัวอย่างจำกัดความลึก 3 ระดับ:
wget -r -l 3 ftps://ftp.example.com/path/to/folder
ดาวน์โหลดไดเรกทอรีทั้งหมดรวมทุกอย่างผ่าน FTP
wget -m ftps://ftp.example.com/path/to/folder
โคลนหน้าเว็บทั้งหน้าด้วย Wget
หากต้องการดึงหน้าเว็บทั้งหน้า รวมรูปภาพ สไตล์ และสคริปต์ ใช้:
wget -p https://www.example.com/page.html
ผลลัพธ์อาจแตกต่างกันไป – บางหน้าเว็บสมัยใหม่ทำงานไม่ดีเมื่อถูกดึงออกจากสภาพแวดล้อมเดิม