Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> สมาร์ทโฟน >> Linux

วิธีบีบอัด ย้าย และแตกไฟล์โฟลเดอร์ใน Linux ด้วย Tar Pipe

คู่มือนี้แนะนำเทคนิค 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 - )

อธิบายการทำงาน

ข้อดีของ Tar Pipe

  • ไม่สร้างไฟล์ไฟล์กลาง (Stream ตรงๆ) → ประหยัดพื้นที่ 디스크, เร็วกว่า
  • รักษา Permission, Ownership, Timestamp, Symlink สมบูรณ์
  • ทำงานได้ข้าม Filesystem/Partition
  • ใช้ได้กับโฟลเดอร์ขนาดใหญ่มาก (หลายร้อย GB)

ตัวเลือกเพิ่มเติม

# แสดงความคืบหน้า (Progress) - ต้องมี pv ติดตั้ง
tar cf - * | pv | ( cd /opt/mysql; tar xfp - )

# บีบอัดระหว่างทาง (ช้ากว่า แต่ประหยัด bandwidth หากส่งผ่านเครือข่าย)
tar czf - * | ( cd /opt/mysql; tar xzfp - )

# ส่งผ่าน SSH ไปเครื่องอื่น
tar cf - * | ssh user@remote "cd /dest && tar xfp -"

คำสั่ง Tar อื่นๆ ที่ควรรู้

ส่วนคำอธิบาย
cd /var/lib/mysqlเข้าโฟลเดอร์ต้นทาง
tar cf - *สร้าง tar archive จากไฟล์ทั้งหมด (*) ส่งออก stdout (-)
|Pipe ส่งข้อมูลไปยังคำสั่งถัดไป
( cd /opt/mysql; tar xfp - )Subshell: เข้าโฟลเดอร์ปลายทาง แล้ว extract จาก stdin (-)
xExtract
f -อ่านจาก stdin (file -)
pPreserve 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 และไฟล์สำคัญ