Linux ไฟล์และโฟลเดอร์จะถูกจัดเก็บในโครงสร้างแบบ Filesystem Hierarchy Standard (FHS)

📌 1. เข้าใจโครงสร้างพื้นฐานของ Linux

Linux ใช้โครงสร้างแบบต้นไม้ (Hierarchy) โดยโฟลเดอร์สำคัญ ๆ ได้แก่:

📂 อธิบายคำย่อของโฟลเดอร์ใน Linux

โฟลเดอร์คำย่อ (เต็ม)คำอธิบาย
/Root Directoryโฟลเดอร์หลักที่เก็บทุกไฟล์ในระบบ Linux โดยที่ทุกโฟลเดอร์ในระบบจะถูกเก็บใน /
/binBinaryเก็บโปรแกรมที่จำเป็นพื้นฐานสำหรับการทำงานของระบบ เช่น คำสั่ง ls, cp, rm
/sbinSystem Binaryเก็บโปรแกรมที่ใช้โดยผู้ดูแลระบบ (root user) เช่น คำสั่ง fdisk, iptables
/etcEtceteraเก็บไฟล์ configuration ของระบบ เช่น nginx.conf, hosts, passwd
/homeHome Directoryเก็บข้อมูลของผู้ใช้แต่ละคน เช่น /home/user ที่เก็บข้อมูลส่วนตัวและไฟล์การตั้งค่าของผู้ใช้
/rootRoot Homeโฟลเดอร์ home สำหรับผู้ใช้ root (administrator)
/varVariableเก็บไฟล์ที่มีการเปลี่ยนแปลงบ่อย เช่น log, database, หรือไฟล์ที่เก็บไว้ชั่วคราว เช่น /var/log สำหรับ log ต่าง ๆ
/var/wwwWeb Serverเก็บไฟล์ที่ใช้สำหรับเว็บเซิร์ฟเวอร์ เช่น Apache, Nginx หรือเว็บไซต์ต่าง ๆ
/var/libLibrary (Data)เก็บข้อมูลที่โปรแกรมหรือบริการต่าง ๆ ใช้งาน เช่น ฐานข้อมูลของ MySQL อยู่ที่ /var/lib/mysql
/tmpTemporaryเก็บไฟล์ชั่วคราวที่อาจถูกลบเมื่อเครื่องรีสตาร์ท
/usrUnix System Resourcesเก็บโปรแกรม, ไลบรารี, และไฟล์เอกสารต่าง ๆ ที่ใช้โดยผู้ใช้งานทั่วไป เช่น /usr/bin (โปรแกรมที่ใช้ในระบบ) และ /usr/lib (ไลบรารีที่โปรแกรมใช้งาน)
/devDevicesเก็บไฟล์อุปกรณ์ต่าง ๆ ในระบบ เช่น /dev/sda (hard drive), /dev/tty1 (terminal)
/procProcessเก็บข้อมูลเกี่ยวกับ process ที่กำลังทำงาน เช่น /proc/cpuinfo (ข้อมูลเกี่ยวกับ CPU) และ /proc/meminfo (ข้อมูลเกี่ยวกับ RAM)
/sysSystem Informationเก็บข้อมูลของ kernel และ hardware เช่น /sys/block (ข้อมูลเกี่ยวกับบล็อกอุปกรณ์)

🔍 อธิบายคำย่อเพิ่มเติมในรายละเอียด

  1. /binBinary
    • “Binary” หมายถึง โปรแกรมที่ถูกคอมไพล์แล้ว (Executable files) ซึ่งเป็นคำสั่งที่ใช้โดยผู้ใช้งานทั่วไปและระบบเพื่อทำงานต่าง ๆ ในระบบ Linux
  2. /sbinSystem Binary
    • “System Binary” เป็นโปรแกรมที่ใช้สำหรับการดูแลระบบ เช่น การจัดการอุปกรณ์ (device), การจัดการระบบเครือข่าย และคำสั่งที่ต้องใช้สิทธิ์ root
  3. /etcEtcetera
    • “Etcetera” หมายถึง อื่น ๆ หรือไฟล์ที่ใช้สำหรับการตั้งค่าของระบบและโปรแกรมต่าง ๆ ในระบบปฏิบัติการ
  4. /varVariable
    • “Variable” หมายถึง ไฟล์ที่มีการเปลี่ยนแปลงบ่อย เช่น ไฟล์ log, ไฟล์ที่เกี่ยวข้องกับการทำงานของโปรแกรม, ข้อมูลต่าง ๆ ที่มีการปรับปรุงบ่อย ๆ
  5. /usrUnix System Resources
    • “Unix System Resources” ใช้เก็บไฟล์ที่จำเป็นสำหรับโปรแกรมต่าง ๆ ที่ไม่จำเป็นต้องเป็นส่วนของระบบหลัก เช่น โปรแกรม, ไลบรารี, และเอกสารการใช้งาน

📂 ตัวอย่างเพิ่มเติม

  • /home/username: คือ Home directory ของผู้ใช้ที่ชื่อว่า username
  • /var/log: ใช้เก็บไฟล์ log ของระบบ เช่น ข้อความการทำงานต่าง ๆ ของระบบ
  • /usr/lib: ใช้เก็บไฟล์ ไลบรารี (Libraries) ที่โปรแกรมต่าง ๆ ใช้
  • /proc/cpuinfo: ใช้เก็บข้อมูลเกี่ยวกับ CPU ที่ใช้งานในเครื่อง

🔑 สรุปคำย่อหลัก

คำย่อความหมายเต็มคำอธิบาย
/binBinaryโปรแกรมที่จำเป็นพื้นฐานของระบบ
/sbinSystem Binaryคำสั่งที่ใช้โดยผู้ดูแลระบบ (root)
/etcEtceteraไฟล์การตั้งค่าของระบบและโปรแกรมต่าง ๆ
/varVariableไฟล์ที่เปลี่ยนแปลงบ่อย เช่น log, database
/usrUnix System Resourcesโปรแกรม, ไลบรารี และเอกสารการใช้งาน

/var/www/html

โฟลเดอร์ /var/www/html เป็นตำแหน่งที่ใช้เก็บไฟล์ เว็บไซต์ ในเซิร์ฟเวอร์ที่ใช้ Apache หรือ Nginx เช่น:

  • ถ้าคุณรัน Apache, เว็บไซต์ที่เข้าถึงผ่าน http://yourdomain.com จะโหลดไฟล์จาก /var/www/html
  • ถ้าคุณใช้ Nginx, ไฟล์เริ่มต้นก็มักจะอยู่ที่ /var/www/html (เว้นแต่ว่าจะมีการตั้งค่าต่างหากใน /etc/nginx/sites-available/default)

📌 ตัวอย่างไฟล์ใน /var/www/html

/var/www/html/
 ├── index.html   # หน้าเว็บหลัก (Static HTML)
 ├── index.php    # หน้าเว็บหลัก (Dynamic PHP)
 ├── css/         # โฟลเดอร์เก็บไฟล์ CSS
 ├── js/          # โฟลเดอร์เก็บไฟล์ JavaScript
 ├── images/      # เก็บไฟล์รูปภาพ

👉 สิทธิ์ของไฟล์: โดยปกติ ไฟล์ใน /var/www/html จะถูกกำหนดให้ root เป็นเจ้าของ แต่เว็บเซิร์ฟเวอร์ (เช่น Apache/Nginx) ทำงานภายใต้ user เช่น www-data ดังนั้นคุณอาจต้องกำหนดสิทธิ์ด้วย:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

/var/lib/mysql

โฟลเดอร์ /var/lib/mysql ใช้เก็บข้อมูลของ MySQL/MariaDB เช่น:

  • ฐานข้อมูล (Database)
  • ตาราง (Tables)
  • Log file และ index file

📌 ตัวอย่างไฟล์ใน /var/lib/mysql

/var/lib/mysql/
 ├── ibdata1         # ไฟล์ข้อมูลหลักของ InnoDB
 ├── ib_logfile0     # ไฟล์ log ของ InnoDB
 ├── mysql/          # โฟลเดอร์ระบบของ MySQL (user, privileges)
 ├── my_database/    # โฟลเดอร์ที่เก็บฐานข้อมูลที่คุณสร้าง
 │   ├── table1.frm  # โครงสร้างของตาราง table1
 │   ├── table1.ibd  # ไฟล์ข้อมูลของตาราง table1 (InnoDB)

สิทธิ์ของไฟล์: MySQL ต้องการให้ไฟล์ทั้งหมดอยู่ภายใต้ user mysql ดังนั้น หากมีปัญหาเกี่ยวกับ permission ให้ลองใช้:

sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 700 /var/lib/mysql

การ Backup และ Restore

🔹 Backup เว็บไซต์

tar -czvf backup-www.tar.gz /var/www/html

(บีบอัดไฟล์ทั้งหมดใน /var/www/html เป็นไฟล์ backup-www.tar.gz)

🔹 Backup ฐานข้อมูล MySQL

mysqldump -u root -p --all-databases > backup-db.sql

(สำรองฐานข้อมูลทั้งหมดเป็นไฟล์ backup-db.sql)

🔹 Restore เว็บไซต์

tar -xzvf backup-www.tar.gz -C /

(คืนค่าข้อมูลเว็บไซต์)

🔹 Restore ฐานข้อมูล

mysql -u root -p < backup-db.sql

(คืนค่าฐานข้อมูลทั้งหมด)

Leave a Comment