“Tarball ไม่ใช่ Version Control” ครับ แม้ว่าเราจะสามารถใช้มันเพื่อเก็บสำรองข้อมูลในแต่ละช่วงเวลาได้ก็ตามเพื่อให้เห็นภาพชัดเจน เรามาดูความแตกต่างระหว่าง Tarball ( Backup/Archive ) กับ Version Control Systems ( VCS ) อย่าง Git กันครับ
หน้าที่หลัก ( Primary Function )
- Tarball: คือการ “ถ่ายรูปนิ่ง” ( Snapshot ) ของไฟล์ ณ เวลานั้น ๆ แล้วแพ็ครวมกันเป็นก้อนเดียวเพื่อความสะดวกในการเก็บหรือเคลื่อนย้าย
- Version Control ( เช่น Git ): คือการ “บันทึกประวัติการเปลี่ยนแปลง” ( Timeline ) ของไฟล์แต่ละบรรทัด ใครแก้ แก้เมื่อไหร่ และแก้ทำไม
การเปรียบเทียบคุณสมบัติ
| คุณสมบัติ | Tarball ( Backup ) | Version Control ( Git ) |
| การเก็บข้อมูล | เก็บไฟล์ทั้งหมดซ้ำ ๆ ใหม่ทุกครั้ง | เก็บเฉพาะส่วนที่เปลี่ยนแปลง ( Delta ) |
| ประวัติการแก้ไข | ดูลำดับการแก้ลำบาก ( ต้องไล่เปิดดูทีละไฟล์ ) | ดู Log ได้ละเอียดว่าบรรทัดไหนเปลี่ยน |
| การย้อนกลับ ( Rollback ) | ต้องลบของเก่าแล้วแตกไฟล์ Tarball ทับ | สั่ง checkout หรือ revert ได้ทันที |
| การทำงานร่วมกัน | แก้พร้อมกันไม่ได้ ( ไฟล์จะทับกัน ) | มีระบบ Branch และ Merge เพื่อรวมงาน |
| ขนาดพื้นที่ | เปลืองพื้นที่มากถ้าทำบ่อย ๆ | ประหยัดพื้นที่กว่าเพราะเก็บส่วนต่าง |
แล้วทำไมเรายังใช้ Tarball อยู่ ?
ถึงแม้ Tarball จะไม่ใช่ Version Control แต่ในสายงาน System Admin หรือ Developer มันมีหน้าที่ที่ Git ทำไม่ได้ดีเท่า เช่น
- การ Deployment: เรามักจะ Build Code ที่เสร็จแล้วจาก Git ให้กลายเป็น Tarball เพื่อนำไปแตกไฟล์ ( Extract ) ลงบน Production Server เพราะมันรวมไฟล์ที่จำเป็นไว้ครบในก้อนเดียว
- Configuration Backup: ก่อนจะแก้ไขไฟล์สำคัญใน
/etc/หรือลง Software ใหม่ ( เช่น Nginx ) การทำ Tarball เก็บไว้เป็น “จุดเซฟ” ที่เร็วที่สุดและปลอดภัยที่สุด เพราะไม่ต้องตั้งค่า Repository ใด ๆ - Portability: การส่ง Tarball ให้คนอื่นเหมือนการส่งไฟล์ Zip ที่รักษา Permissions ของไฟล์ระบบไว้ได้ครบถ้วน
สรุป
Tarball คือ “กล่องเก็บของ” ส่วน Version Control คือ “กล้องวงจรปิด” ครับ
ถ้าคุณทำงานคนเดียวและแค่อยากเก็บสำรองไฟล์ Config ก่อนลงมือแก้ การใช้ Tarball ก็เพียงพอและเร็วดีครับ แต่ถ้าเป็นการเขียนโปรแกรมหรือโปรเจกต์ที่มีการแก้ไขต่อเนื่อง การใช้ Git จะมีประสิทธิภาพและปลอดภัยกว่ามาก