คู่มือนี้แนะนำเทคนิค Tar Pipe สำหรับคัดลอกโฟลเดอร์ขนาดใหญ่ (เช่น Database) ระหว่างตำแหน่งใน Linux อย่างปลอดภัยและรักษาสิทธิ์/เวลาไฟล์
สถานการณ์
ย้าย /var/lib/mysql (MySQL data directory) ไป /opt/mysql โดยรักษา permission, ownership, timestamp
คำสั่งหลัก (One-liner)
# cd /var/lib/mysql
# tar cf - * | ( cd /opt/mysql; tar xfp - )
อธิบายการทำงาน
| ส่วน | คำอธิบาย |
|---|---|
cd /var/lib/mysql | เข้าโฟลเดอร์ต้นทาง |
tar cf - * | สร้าง tar archive จากไฟล์ทั้งหมด (*) ส่งออก stdout (-) |
| | Pipe ส่งข้อมูลไปยังคำสั่งถัดไป |
( cd /opt/mysql; tar xfp - ) | Subshell: เข้าโฟลเดอร์ปลายทาง แล้ว extract จาก stdin (-) |
x | Extract |
f - | อ่านจาก stdin (file -) |
p | Preserve permissions (รักษา permission, ownership, timestamp) - สำคัญมาก |
| คำสั่ง | คำอธิบาย |
|---|---|
tar -czf backup.tar.gz /path | บีบอัด gzip |
tar -cjf backup.tar.bz2 /path | บีบอัด bzip2 (อัตราสูงกว่า) |
tar -cJf backup.tar.xz /path | บีบอัด xz (อัตราสูงสุด) |
tar -tf archive.tar | ดูรายการไฟล์ใน archive |
tar -xf archive.tar -C /dest | แตกไปโฟลเดอร์เฉพาะ |
Tar Pipe เป็นเทคนิคคลาสสิกที่น่าเชื่อถือ ใช้ได้จริงใน Production environment สำหรับการย้ายข้อมูล Database และไฟล์สำคัญ