ทำไมการไพพ์ 'dd' ผ่าน gzip จึงเร็วกว่าการคัดลอกโดยตรง
ฉันต้องการสำรองเส้นทางจากคอมพิวเตอร์ในเครือข่ายของฉันไปยังคอมพิวเตอร์เครื่องอื่นในเครือข่ายเดียวกันผ่านสาย 100 Mbit / s สำหรับสิ่งนี้ฉันทำ dd if=/local/path of=/remote/path/in/local/network/backup.img ซึ่งให้ความเร็วในการถ่ายโอนข้อมูลผ่านเครือข่ายที่ต่ำมากของฉันประมาณ 50 ถึง 100 kB / s ซึ่งจะคงอยู่ตลอดไป ดังนั้นฉันจึงหยุดมันและตัดสินใจที่จะลอง gzipping มันทันทีเพื่อทำให้มันเล็กลงมากเพื่อที่จำนวนการถ่ายโอนจะน้อยลง ดังนั้นฉันทำ dd if=/local/path | gzip > /remote/path/in/local/network/backup.img.gz แต่ตอนนี้ฉันได้รับความเร็วการถ่ายโอนเครือข่าย 1 MB / s ดังนั้นปัจจัย 10 ถึง 20 เร็วขึ้น หลังจากสังเกตเห็นสิ่งนี้ฉันทดสอบสิ่งนี้ในหลาย ๆ พา ธ และไฟล์และมันก็เหมือนกันเสมอ เหตุใดการส่งddผ่านท่อจึงgzipเพิ่มอัตราการถ่ายโอนด้วยปัจจัยขนาดใหญ่แทนที่จะลดเพียงความยาวคลื่น bytel ด้วยปัจจัยขนาดใหญ่เท่านั้น ฉันคาดว่าแม้อัตราการถ่ายโอนจะลดลงเล็กน้อยเนื่องจากการใช้ CPU ที่สูงขึ้นในขณะที่บีบอัด แต่ตอนนี้ฉันได้รับการบวกสองครั้ง ไม่ใช่ว่าฉันไม่มีความสุข …