คำสั่ง Linux และทักษะเชลล์
wget: เครื่องมือดาวน์โหลดที่ไม่เคยหลับใหล
wget เป็น curl สำหรับงานที่วัดเป็นชั่วโมง: มิเรอร์, ไฟล์เก็บถาวร, การดึงแบบเรียกซ้ำ และชุดงาน cron ที่ทำงานในขณะที่ไม่มีใครดู โดยจะเรียกซ้ำ ทำตาม robots.txt ดำเนินการถ่ายโอนที่ถูกขัดจังหวะต่อตามค่าเริ่มต้น และกำหนดอัตราของตัวเองตามขีดจำกัดอัตราและช่วงเวลารอ ซึ่งเป็นการโค้งงออย่างสุภาพต่อผู้โทร ระหว่างเครื่องมือทั้งสอง การแบ่งส่วนนั้นสะอาดหมดจด: ต้องการจำนวนมากและความอดทน, โค้งงอเพื่อความแม่นยำ และทีมที่รู้ว่าทั้งสองแทบจะไม่ต้องการตัวติดตั้งคนที่สาม
ประเด็นสำคัญ
- การมิเรอร์เป็นหนึ่งบรรทัด: wget --mirror --convert-links --adjust-extension --no-parent https://docs.example.com; ละเว้น --no-parent และเอกสารเก็บถาวรจะกลายเป็นการรวบรวมข้อมูลของทุกสิ่งที่อยู่ด้านบนอย่างเงียบๆ
- ดำเนินการต่อและลองใหม่อีกครั้งฟรี: wget -c เลือกการสำรองข้อมูลการถ่ายโอนที่ถูกขัดจังหวะ และ --tries=10 --waitretry=5 กำจัดเซิร์ฟเวอร์ที่สะอึกกลางกลุ่ม แทนที่จะทำงานล้มเหลวในการกระตุกครั้งแรก
- ความสุภาพมีธง: --limit-rate=200k, --wait=1 และ --random-wait ป้องกันไม่ให้มิเรอร์สะดุดขีด จำกัด อัตราอัปสตรีมหรือส่วนคำสั่งการละเมิดเซิร์ฟเวอร์ที่ใช้ร่วมกัน โฮสติ้งที่ใช้ร่วมกันและซอฟต์แวร์รวบรวมข้อมูลที่ไม่มีการควบคุมถือเป็นมิตรภาพระยะสั้น
- robots.txt จะถูกยึดตามค่าเริ่มต้น -e robots=off แทนที่มันโดยเจตนา และการใช้การแทนที่นั้นกับไซต์ที่ใช้งานจริงของผู้อื่นจะทำให้การดาวน์โหลดจำนวนมากกลายเป็นตั๋วเหตุการณ์
- wget -O /dev/null -nv https://host/health เป็นโพรบตรวจสอบบรรทัดเดียวซึ่งมีโค้ดทางออกที่มีการวินิจฉัย: 4 คือความล้มเหลวของเครือข่าย, 8 คือข้อผิดพลาดของเซิร์ฟเวอร์ และทั้งคู่เต้น cron แบบเงียบ
- การเปลี่ยนแปลงมีความสำคัญหลังจากข้อเท็จจริง: --convert-links เขียนไซต์มิเรอร์ใหม่สำหรับการนำทางแบบออฟไลน์ และ --adjust-extension บันทึกหน้าเว็บที่สร้าง CMS ภายใต้ส่วนขยายที่เครื่องมือในเครื่องสามารถให้บริการได้
- งานจำนวนมากใน cron ได้รับไฟล์ล็อค หรือการรันที่ทับซ้อนกันจะเขียนลงในไฟล์ที่เสร็จเพียงครึ่งเดียวของกันและกัน ในขณะที่ --waitretry ขยายงานอย่างเงียบ ๆ ผ่านหน้าต่าง wget ไม่มี mutex ภายใน
- รู้ขอบเขต: แบบฟอร์ม เซสชันที่มีคุกกี้จำนวนมาก และจุดสิ้นสุด API เป็นของ Curl และเพจที่สร้างโดย JavaScript จะมิเรอร์เป็นเชลล์ว่างเนื่องจาก wget ติดตามลิงก์ ไม่ใช่สคริปต์
บันทึกจากหน้างาน
มิเรอร์ตัวหนึ่งที่ไม่มี --no-parent เดินเข้าไปในไลบรารีสื่อของลูกค้าขนาดสี่สิบกิกะไบต์ในชั่วข้ามคืนและเกือบจะเต็มดิสก์ ธงความสุภาพจะถูกตั้งค่าเพียงครั้งเดียวและจะถูกคัดลอกตลอดไป
คำถามที่พบบ่อย
ทำไมมิเรอร์ของฉันถึงมีเพียงหน้าเดียว?
การตั้งค่าสถานะขอบเขตทำงานที่ใครบางคนตั้งใจจะเลิกทำ: ข้อจำกัดของ robots.txt, --no-parent, ขีดจำกัดความลึก หรือไซต์ที่แสดงผลด้วย JavaScript wget ติดตามลิงก์ที่สามารถดูได้ ตรวจสอบ -o wget.log ก่อนที่จะตำหนิเครื่องมือ
เมื่อใดที่ฉันควรเลือก wget over curl สำหรับการดาวน์โหลดครั้งเดียว
สำหรับสิ่งที่สามารถดำเนินการต่อหรือเชื่อถือได้ของ cron: -c ความต่อเนื่อง การลองใหม่ในตัว และการประทับเวลา (--การประทับเวลา) ทำให้ wget เป็นตัวเลือกช่วงความสนใจต่ำ curl ให้คุณเหมือนกันก็ต่อเมื่อคุณประกอบเอง
การทำมิเรอร์เว็บไซต์สาธารณะถือเป็นเรื่องถูกกฎหมายหรือสุภาพหรือไม่?
การเป็นเจ้าของจะตัดสินเรื่องกฎหมาย, robots.txt และโหลดจะตัดสินอย่างสุภาพ: เคารพไฟล์โรบ็อต, เร่งความเร็วให้อยู่ในระดับมนุษย์ และเลือกใช้การส่งออกอย่างเป็นทางการหรือ API ทันทีที่เป้าหมายเสนอ
เหตุใดบางไซต์จึงส่งคืน 403 กลับไปเป็น wget ธรรมดา
การกรอง User-agent มักเกิดขึ้นโดยเจตนา --user-agent='Mozilla/5.0' ช่วยให้คุณผ่านพ้นไปได้ แต่ 403 ที่กรองแล้วยังหมายความว่าผู้ปฏิบัติงานกำลังรับชม ดังนั้นบทสนทนาหรือ API จึงเป็นขั้นตอนต่อไปที่ดีกว่า
Kinetikatech ช่วยเรื่อง คำสั่ง linux และทักษะเชลล์ ได้อย่างไร
ข้อเสนอง่าย ๆ แบบนี้: คำสั่งและพฤติกรรมการเขียนสคริปต์ที่ตัดสินใจว่าผู้ดูแลระบบจะใช้งานเซิร์ฟเวอร์หรือต่อสู้กับเซิร์ฟเวอร์: ค้นหา แปลง ถ่ายโอน และดูแลข้อความและกระบวนการด้วยเครื่องมือที่อยู่ในทุกการติดตั้งฐาน ส่งให้บริการ ความปลอดภัยเซิร์ฟเวอร์ Linuxและการจัดการเซิร์ฟเวอร์ ของเราดูแล มีการประเมินอย่างเหมาะสม ลงมือแบบสะอาด และมีคนเฝ้าตลอด 24 ชั่วโมง