แยกไฟล์ขนาดใหญ่เป็นไฟล์ย่อยๆ ด้วยคำสั่ง split

ในกรณีที่คุณต้องการส่งไฟล์ที่มีขนาดใหญ่มากๆ เช่นหลายร้อย GB ไปยังเครื่องอื่นๆ แต่ไม่สามารถ copy ลง USB Drive หรือถ้าจะโหลดผ่านอินเทอร์เน็ต ก็กลัวเน็ตจะมีปัญหาระหว่างโหลด ทำให้ต้องเริ่มโหลดใหม่ทุกครั้ง

วิธีการแก้ไขปัญหา แนะนำให้แบ่งไฟล์ขนาดใหญ่ เป็นไฟล์ขนาดเล็กๆ ที่พอจะ copy หรือโหลดผ่านเน็ตไปยังปลายทางได้อย่างไม่มีปัญหา แล้วเมื่อโหลดไฟล์ย่อยๆ ครบถ้วนแล้ว ค่อยมารวมไฟล์ย่อยๆ กลับไปเป็นไฟล์ใหญ่ต้นฉบับอีกที

ในที่นี้ขอแนะนำการใช้คำสั่ง split ซึ่งเป็นคำสั่งที่มีอยู่บน Unix ไม่ว่าจะเป็น Linux หรือ MacOS เพื่อใช้ในการแบ่งไฟล์ และสุดท้ายเราจะใช้คำสั่ง cat ในการรวมไฟล์

แบ่งไฟล์ด้วยคำสั่ง split

ตัวอย่างเรามีไฟล์ขนาด 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

เมื่อเครื่องปลายทางได้รับไฟล์ย่อยๆ ครบเรียบร้อยแล้ว เราสามารถใช้คำสั่ง 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