วิธีดาวน์โหลดไดเรกทอรีและไดเรกทอรีย่อยทั้งหมดโดยใช้ wget


143

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

http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/ *

ฉันจะใช้wget(หรือเครื่องมืออื่นที่คล้ายคลึงกัน) เพื่อดาวน์โหลดไฟล์ทั้งหมดในที่เก็บนี้ได้อย่างไรโดยที่โฟลเดอร์ "tzivi" เป็นโฟลเดอร์รูทและมีไฟล์และโฟลเดอร์ย่อยหลายไฟล์ (ไม่เกิน 2 หรือ 3 ระดับ) ภายใต้มัน


3
คุณไม่สามารถทำเช่นนั้นได้หากเซิร์ฟเวอร์ไม่มีเว็บเพจที่มีรายการลิงก์ทั้งหมดไปยังไฟล์ที่คุณต้องการ
Eddy_Em

1
คุณรู้จักชื่อไฟล์หรือไม่
Karoly Horvath

ไม่ฉันไม่ทราบชื่อของไฟล์ทั้งหมดฉันลอง wget ด้วยตัวเลือกแบบเรียกซ้ำ แต่มันก็ไม่ได้ผลเช่นกันเพราะเซิร์ฟเวอร์ไม่มีไฟล์ index.html ใด ๆ ที่แสดงลิ้งค์ด้านในทั้งหมด
code4fun

คุณลองใช้ตัวเลือกการมิเรอร์ของ wget หรือไม่
Tomasz Nguyen

คำตอบ:


193

คุณสามารถใช้สิ่งนี้ในเปลือก:

wget -r --no-parent http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/

พารามิเตอร์คือ:

-r     //recursive Download

และ

--no-parent // Don´t download something from the parent directory

หากคุณไม่ต้องการดาวน์โหลดเนื้อหาทั้งหมดคุณสามารถใช้:

-l1 just download the directory (tzivi in your case)

-l2 download the directory and all level 1 subfolders ('tzivi/something' but not 'tivizi/somthing/foo')  

และอื่น ๆ หากคุณไม่ใส่-lตัวเลือกใดๆ ระบบwgetจะใช้งาน-l 5อัตโนมัติ

หากคุณใส่-l 0จะดาวน์โหลดทั้งอินเทอร์เน็ตเพราะwgetจะไปตามลิงค์ที่พบ


19
เยี่ยมมากเพื่อทำให้การอ่านครั้งต่อไปง่ายขึ้น: wget -r -l1 --no-parent http://www.stanford.edu/~boyd/cvxbook/cvxbook_additional_exercises/นั่นเป็นคำตอบสำหรับฉัน ขอบคุณคำตอบของคุณ
isomorphismes

2
ฉันลองคำสั่งด้านบนเพื่อรับไฟล์http://websitename.com/wp-content/uploads/2009/05ทั้งหมด แต่ทั้งหมดที่ฉันได้รับคือindex.htmlไฟล์ที่ไม่มีอะไรเลย ฉันไม่สามารถคิดสิ่งที่ฉันพลาด
Vivek Todi

@up: โปรดทราบว่า wget ติดตามลิงก์ดังนั้นคุณต้องมีรายชื่อไดเรกทอรี;)

11
ฉันรู้ว่ามันค่อนข้างเก่า แต่สิ่งที่ฉันพบว่ามีประโยชน์ก็คือ-e robots=offสวิตช์ ;)
Matthias W.

2
ทำไมคุณไม่ลบ "ฉันลืมสิ่งที่สำคัญ" และเพียงแค่แก้ไขคำตอบ ???
user1271772

16

คุณสามารถใช้สิ่งนี้ในเปลือก:

wget -r -nH --cut-dirs=7 --reject="index.html*" \
      http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/

พารามิเตอร์คือ:

-r recursively download

-nH (--no-host-directories) cuts out hostname 

--cut-dirs=X (cuts out X directories)


3
wget -r --no-parent URL --user=username --password=password

ตัวเลือกสองตัวเลือกสุดท้ายเป็นตัวเลือกหากคุณมีชื่อผู้ใช้และรหัสผ่านสำหรับการดาวน์โหลดมิฉะนั้นไม่จำเป็นต้องใช้ตัวเลือกเหล่านั้น

นอกจากนี้คุณยังสามารถดูตัวเลือกเพิ่มเติมได้ที่ลิงค์https://www.howtogeek.com/281663/how-to-use-wget-the-ultimate-command-line-downloading-tool/


1

คุณยังสามารถใช้คำสั่งนี้:

wget --mirror -pc --convert-links -P ./your-local-dir/ http://www.your-website.com

เพื่อให้คุณได้ภาพที่ชัดเจนของเว็บไซต์ที่คุณต้องการดาวน์โหลด



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