Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

เชี่ยวชาญ Linux wget: คู่มือครบถ้วนพร้อมตัวอย่างปฏิบัติจริง

หากคุณเคยติดตามบทช่วยสอน 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

ผลลัพธ์อาจแตกต่างกันไป – บางหน้าเว็บสมัยใหม่ทำงานไม่ดีเมื่อถูกดึงออกจากสภาพแวดล้อมเดิม