ในกรณีที่คุณต้องการส่งไฟล์ที่มีขนาดใหญ่มากๆ เช่นหลายร้อย GB ไปยังเครื่องอื่นๆ แต่ไม่สามารถ copy ลง USB Drive หรือถ้าจะโหลดผ่านอินเทอร์เน็ต ก็กลัวเน็ตจะมีปัญหาระหว่างโหลด ทำให้ต้องเริ่มโหลดใหม่ทุกครั้ง
วิธีการแก้ไขปัญหา แนะนำให้แบ่งไฟล์ขนาดใหญ่ เป็นไฟล์ขนาดเล็กๆ ที่พอจะ copy หรือโหลดผ่านเน็ตไปยังปลายทางได้อย่างไม่มีปัญหา แล้วเมื่อโหลดไฟล์ย่อยๆ ครบถ้วนแล้ว ค่อยมารวมไฟล์ย่อยๆ กลับไปเป็นไฟล์ใหญ่ต้นฉบับอีกที
ในที่นี้ขอแนะนำการใช้คำสั่ง split ซึ่งเป็นคำสั่งที่มีอยู่บน Unix ไม่ว่าจะเป็น Linux หรือ MacOS เพื่อใช้ในการแบ่งไฟล์ และสุดท้ายเราจะใช้คำสั่ง cat ในการรวมไฟล์
ตัวอย่างเรามีไฟล์ขนาด 5GB กว่าๆ อยู่ที่เครื่องต้นทาง
[src ~]$ ls -lh db-backup.bin
-rw-rw-r-- 1 supasin supasin 5.5G Dec 4 07:08 db-backup.bin
เราสามารถใช้คำสั่ง split
ระบุออปชัน -b
เพื่อกำหนดขนาดของไฟล์ย่อยๆ
เช่นต้องการแบ่งเป็นไฟล์ย่อยๆ ขนาด 1,000,000 bytes
[src ~]$ split -b 1000000000 db-backup.bin
ผลลัพธ์ของการแบ่งไฟล์
ดีฟอลต์ชื่อไฟล์ย่อยๆ จะขึ้นต้นด้วยตัว x
[src ~]$ ls -l
-rw-rw-r-- 1 supasin supasin 5865381888 Dec 4 07:08 db-backup.bin
-rw-rw-r-- 1 supasin supasin 1000000000 Dec 4 07:09 xaa
-rw-rw-r-- 1 supasin supasin 1000000000 Dec 4 07:09 xab
-rw-rw-r-- 1 supasin supasin 1000000000 Dec 4 07:09 xac
-rw-rw-r-- 1 supasin supasin 1000000000 Dec 4 07:09 xad
-rw-rw-r-- 1 supasin supasin 1000000000 Dec 4 07:09 xae
-rw-rw-r-- 1 supasin supasin 865381888 Dec 4 07:09 xaf
หลังจากนั้น เราก็ทำการ copy หรือโหลดไฟล์ย่อยๆ ไปยังเครื่องปลายทาง
เมื่อเครื่องปลายทางได้รับไฟล์ย่อยๆ ครบเรียบร้อยแล้ว เราสามารถใช้คำสั่ง cat
เพื่อรวมกลับเป็นไฟล์ต้นฉบับ
[dst ~]$ cat xaa xab xac xad xae xaf > file.bin
ผลลัพธ์การรวมไฟล์
[dst ~]$ ls -l file.bin
-rw-rw-r-- 1 supasin supasin 5865381888 Dec 4 07:10 file.bin
ตรวจสอบความถูกต้องของไฟล์ด้วย sha256sum
ไฟล์ต้นทาง
[src ~]$ sha256sum db-backup.bin
f1d31a8718230d552bcc08943a3b30f48275ea35ce8ba7936d9237696a4e839f db-backup.bin
ไฟล์ที่เครื่องปลายทาง
[dst ~]$ sha256sum file.bin
f1d31a8718230d552bcc08943a3b30f48275ea35ce8ba7936d9237696a4e839f file.bin