ป้ายกำกับ: บันทึกประวัติการเปลี่ยนแปลง

Tarball: เป็น version control ?Tarball: เป็น version control ?

“Tarball ไม่ใช่ Version Control” ครับ แม้ว่าเราจะสามารถใช้มันเพื่อเก็บสำรองข้อมูลในแต่ละช่วงเวลาได้ก็ตามเพื่อให้เห็นภาพชัดเจน เรามาดูความแตกต่างระหว่าง Tarball กับ Version Control Systems อย่าง Git กันครับ


หน้าที่หลัก

  • Tarball: คือการ “ถ่ายรูปนิ่ง” ของไฟล์ ณ เวลานั้น ๆ แล้วแพ็ครวมกันเป็นก้อนเดียวเพื่อความสะดวกในการเก็บหรือเคลื่อนย้าย
  • Version Control: คือการ “บันทึกประวัติการเปลี่ยนแปลง” ของไฟล์แต่ละบรรทัด ใครแก้ แก้เมื่อไหร่ และแก้ทำไม

การเปรียบเทียบคุณสมบัติ

คุณสมบัติ Tarball Version Control
การเก็บข้อมูล เก็บไฟล์ทั้งหมดซ้ำ ๆ ใหม่ทุกครั้ง เก็บเฉพาะส่วนที่เปลี่ยนแปลง
ประวัติการแก้ไข ดูลำดับการแก้ลำบาก ดู Log ได้ละเอียดว่าบรรทัดไหนเปลี่ยน
การย้อนกลับ ต้องลบของเก่าแล้วแตกไฟล์ Tarball ทับ สั่ง checkout หรือ revert ได้ทันที
การทำงานร่วมกัน แก้พร้อมกันไม่ได้ มีระบบ Branch และ Merge เพื่อรวมงาน
ขนาดพื้นที่ เปลืองพื้นที่มากถ้าทำบ่อย ๆ ประหยัดพื้นที่กว่าเพราะเก็บส่วนต่าง

แล้วทำไมเรายังใช้ Tarball อยู่ ?

ถึงแม้ Tarball จะไม่ใช่ Version Control แต่ในสายงาน System Admin หรือ Developer มันมีหน้าที่ที่ Git ทำไม่ได้ดีเท่า เช่น

  • การ Deployment: เรามักจะ Build Code ที่เสร็จแล้วจาก Git ให้กลายเป็น Tarball เพื่อนำไปแตกไฟล์ ลงบน Production Server เพราะมันรวมไฟล์ที่จำเป็นไว้ครบในก้อนเดียว
  • Configuration Backup: ก่อนจะแก้ไขไฟล์สำคัญใน /etc/ หรือลง Software ใหม่ การทำ Tarball เก็บไว้เป็น “จุดเซฟ” ที่เร็วที่สุดและปลอดภัยที่สุด เพราะไม่ต้องตั้งค่า Repository ใด ๆ
  • Portability: การส่ง Tarball ให้คนอื่นเหมือนการส่งไฟล์ Zip ที่รักษา Permissions ของไฟล์ระบบไว้ได้ครบถ้วน

สรุป

Tarball คือ “กล่องเก็บของ” ส่วน Version Control คือ “กล้องวงจรปิด” ครับ

ถ้าคุณทำงานคนเดียวและแค่อยากเก็บสำรองไฟล์ Config ก่อนลงมือแก้ การใช้ Tarball ก็เพียงพอและเร็วดีครับ แต่ถ้าเป็นการเขียนโปรแกรมหรือโปรเจกต์ที่มีการแก้ไขต่อเนื่อง การใช้ Git จะมีประสิทธิภาพและปลอดภัยกว่ามาก