📌 1. เข้าใจโครงสร้างพื้นฐานของ Linux
Linux ใช้โครงสร้างแบบต้นไม้ (Hierarchy) โดยโฟลเดอร์สำคัญ ๆ ได้แก่:
📂 อธิบายคำย่อของโฟลเดอร์ใน Linux
| โฟลเดอร์ | คำย่อ (เต็ม) | คำอธิบาย |
|---|---|---|
/ | Root Directory | โฟลเดอร์หลักที่เก็บทุกไฟล์ในระบบ Linux โดยที่ทุกโฟลเดอร์ในระบบจะถูกเก็บใน / |
/bin | Binary | เก็บโปรแกรมที่จำเป็นพื้นฐานสำหรับการทำงานของระบบ เช่น คำสั่ง ls, cp, rm |
/sbin | System Binary | เก็บโปรแกรมที่ใช้โดยผู้ดูแลระบบ (root user) เช่น คำสั่ง fdisk, iptables |
/etc | Etcetera | เก็บไฟล์ configuration ของระบบ เช่น nginx.conf, hosts, passwd |
/home | Home Directory | เก็บข้อมูลของผู้ใช้แต่ละคน เช่น /home/user ที่เก็บข้อมูลส่วนตัวและไฟล์การตั้งค่าของผู้ใช้ |
/root | Root Home | โฟลเดอร์ home สำหรับผู้ใช้ root (administrator) |
/var | Variable | เก็บไฟล์ที่มีการเปลี่ยนแปลงบ่อย เช่น log, database, หรือไฟล์ที่เก็บไว้ชั่วคราว เช่น /var/log สำหรับ log ต่าง ๆ |
/var/www | Web Server | เก็บไฟล์ที่ใช้สำหรับเว็บเซิร์ฟเวอร์ เช่น Apache, Nginx หรือเว็บไซต์ต่าง ๆ |
/var/lib | Library (Data) | เก็บข้อมูลที่โปรแกรมหรือบริการต่าง ๆ ใช้งาน เช่น ฐานข้อมูลของ MySQL อยู่ที่ /var/lib/mysql |
/tmp | Temporary | เก็บไฟล์ชั่วคราวที่อาจถูกลบเมื่อเครื่องรีสตาร์ท |
/usr | Unix System Resources | เก็บโปรแกรม, ไลบรารี, และไฟล์เอกสารต่าง ๆ ที่ใช้โดยผู้ใช้งานทั่วไป เช่น /usr/bin (โปรแกรมที่ใช้ในระบบ) และ /usr/lib (ไลบรารีที่โปรแกรมใช้งาน) |
/dev | Devices | เก็บไฟล์อุปกรณ์ต่าง ๆ ในระบบ เช่น /dev/sda (hard drive), /dev/tty1 (terminal) |
/proc | Process | เก็บข้อมูลเกี่ยวกับ process ที่กำลังทำงาน เช่น /proc/cpuinfo (ข้อมูลเกี่ยวกับ CPU) และ /proc/meminfo (ข้อมูลเกี่ยวกับ RAM) |
/sys | System Information | เก็บข้อมูลของ kernel และ hardware เช่น /sys/block (ข้อมูลเกี่ยวกับบล็อกอุปกรณ์) |
🔍 อธิบายคำย่อเพิ่มเติมในรายละเอียด
/bin– Binary- “Binary” หมายถึง โปรแกรมที่ถูกคอมไพล์แล้ว (Executable files) ซึ่งเป็นคำสั่งที่ใช้โดยผู้ใช้งานทั่วไปและระบบเพื่อทำงานต่าง ๆ ในระบบ Linux
/sbin– System Binary- “System Binary” เป็นโปรแกรมที่ใช้สำหรับการดูแลระบบ เช่น การจัดการอุปกรณ์ (device), การจัดการระบบเครือข่าย และคำสั่งที่ต้องใช้สิทธิ์ root
/etc– Etcetera- “Etcetera” หมายถึง อื่น ๆ หรือไฟล์ที่ใช้สำหรับการตั้งค่าของระบบและโปรแกรมต่าง ๆ ในระบบปฏิบัติการ
/var– Variable- “Variable” หมายถึง ไฟล์ที่มีการเปลี่ยนแปลงบ่อย เช่น ไฟล์ log, ไฟล์ที่เกี่ยวข้องกับการทำงานของโปรแกรม, ข้อมูลต่าง ๆ ที่มีการปรับปรุงบ่อย ๆ
/usr– Unix System Resources- “Unix System Resources” ใช้เก็บไฟล์ที่จำเป็นสำหรับโปรแกรมต่าง ๆ ที่ไม่จำเป็นต้องเป็นส่วนของระบบหลัก เช่น โปรแกรม, ไลบรารี, และเอกสารการใช้งาน
📂 ตัวอย่างเพิ่มเติม
/home/username: คือ Home directory ของผู้ใช้ที่ชื่อว่าusername/var/log: ใช้เก็บไฟล์ log ของระบบ เช่น ข้อความการทำงานต่าง ๆ ของระบบ/usr/lib: ใช้เก็บไฟล์ ไลบรารี (Libraries) ที่โปรแกรมต่าง ๆ ใช้/proc/cpuinfo: ใช้เก็บข้อมูลเกี่ยวกับ CPU ที่ใช้งานในเครื่อง
🔑 สรุปคำย่อหลัก
| คำย่อ | ความหมายเต็ม | คำอธิบาย |
|---|---|---|
/bin | Binary | โปรแกรมที่จำเป็นพื้นฐานของระบบ |
/sbin | System Binary | คำสั่งที่ใช้โดยผู้ดูแลระบบ (root) |
/etc | Etcetera | ไฟล์การตั้งค่าของระบบและโปรแกรมต่าง ๆ |
/var | Variable | ไฟล์ที่เปลี่ยนแปลงบ่อย เช่น log, database |
/usr | Unix 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
(คืนค่าฐานข้อมูลทั้งหมด)