Copying Big Files

เวลา copy ไฟล์ใหญ่ๆ ข้ามเครื่องใน network เดียวกันแล้ว ส่วนใหญ่เราก็มักจะใช้การ mount network drive ขึ้นมา หรือไม่ก็ copy ผ่านมาทาง SSH แต่วิธีพวกนี้มักจะช้า เพราะต้องเสีย overhead เรื่องของ encryption / overhead ของ protocol ทำให้ได้ความเร็วไม่มากเท่าที่มันควรจะเป็น

ไปเจอวิธีทริกการ copy อย่างว่องไวจาก MySQL Performance Blog จดไว้ซะหน่อย กันลืม (ทั้งสองเครื่องต้องมีโปรแกรม netcat (nc) อยู่ด้วย)

ที่เครื่อง source:
tar -cf - . | nc [target_ip] [port]

ที่เครื่อง target:
nc -l [port] | tar xvf -

วิธีการคือ ส่งข้อมูลดิบๆ ข้ามเครื่องแบบไม่ต้อง encode โดยใช้ netcat เป็นทั้งตัวรับและตัวส่ง ถ้าหากต้องการทำทีละหลายๆ ไฟล์ ใช้ tar ช่วยด้วยตามแบบในโค้ด ก็จะสะดวกดี

Leave a Reply