การสำรองข้อมูลระดับเซิร์ฟเวอร์

การสำรองข้อมูลด้วย Rclone (Google Drive)

Rclone เปรียบเสมือน "swiss army knife" ของ Cloud Storage มันสามารถเชื่อมต่อกับ Google Drive ได้โดยตรง ปลอดภัย และสามารถสั่ง Sync ข้อมูลเป็นโฟลเดอร์ได้ง่ายมาก

การตั้งค่า rclone ผูกกับ GDrive

ติดตั้งและตั้งค่าเบื้องต้นบน Pi

  1. เปิด Terminal บน Pi แล้วรันคำสั่ง:
    sudo apt-get update
    sudo apt-get install rclone -y
  2. พิมพ์คำสั่งเพื่อเริ่มตั้งค่า:
    rclone config
    Rclone Configuration
  • เลือก n (New remote)
  • ตั้งชื่อตามต้องการ เช่น gdrive Rclone Configuration
  • ระบบจะแสดงรายชื่อ Cloud ให้หาเลขที่เป็น Google Drive (มักจะเขียนว่า drive) แล้วพิมพ์เลขนั้น
    หมายเหตุ: ถ้าตั้งค่าผิด ให้เข้าใหม่แล้วลบ จะมีตัวเลือก d เพิ่มเข้ามา
  • ช่อง client_id และ client_secret ให้กด Enter ข้ามไปก่อนได้
  • เลือก 1 (Full access to all files)
  • ช่อง root_folder_id และ service_account_file ให้กด Enter ข้ามไป Rclone Configuration
  • เมื่อถึงข้อความ Edit advanced config? ให้ตอบ n

การล็อกอินบัญชี Google (Use auto config?)

เมื่อระบบถาม Use auto config? ให้เลือกตามสภาวะเครื่อง:

  • ต่อจอใช้งานผ่าน Desktop: ตอบ y ระบบจะเปิด Browser ให้คุณล็อกอิน Google Account และกดอนุญาตสิทธิ์ Rclone Configuration
  • ใช้งานแบบ Headless (SSH): ตอบ n แล้วทำตามคำสั่งบนหน้าจอ (ระบบจะให้ลิงก์มาเปิดบนคอมพิวเตอร์ของคุณเพื่อเอา Code มาวาง) แนะนำให้ใช้วิธี Forward Port ตามหัวข้อถัดไป

การเปิดท่อเชื่อมพอร์ต (Port Forwarding) บน Windows

  1. กลับมาที่หน้าจอ PowerShell บน Windows ของคุณ
  2. พิมพ์คำสั่งด้านล่างนี้เพื่อเปิด SSH ตัวใหม่ที่จะทำหน้าที่ Forward พอร์ต 53682 จากเครื่อง Pi มาโผล่ที่เครื่อง Windows อัตโนมัติ:
    ssh -L 53682:localhost:53682 wasankds@<ใส่ IP ของ Pi>
    # ตัวอย่าง: ssh -L 53682:localhost:53682 [email protected]
  3. ใส่รหัสผ่านของ Pi เพื่อล็อกอินให้เรียบร้อย และเปิดหน้าต่าง PowerShell นี้ค้างไว้ห้ามปิด

ยืนยันการเชื่อมต่อและอนุญาตสิทธิ์

  1. เปิด Web Browser (Chrome หรือ Edge) บนเครื่อง Windows
  2. ก๊อปปี้ลิงก์นี้ไปวางที่ช่องใส่ URL แล้วกด Enter: http://127.0.0.1:53682/auth
  3. หน้าจอ Google จะเด้งขึ้นมาให้คุณเลือกบัญชีและกด "อนุญาต (Allow)"
  4. กลับไปดูหน้าจอ SSH บน Pi ระบบจะดึงรหัสมาล็อกอินให้ตัวเองโดยอัตโนมัติ ให้กดยืนยันตอบ y จนเสร็จสิ้น
  5. Rclone Configuration

การตั้งค่า Shared Drive (Team Drive):
เมื่อระบบถาม Configure this as a Shared Drive (Team Drive)? ให้พิมพ์ n แล้วกด Enter (เพราะใช้บัญชี Google Drive ส่วนตัว)

บันทึกข้อมูล:
เมื่อระบบขึ้นสรุปข้อมูลและถาม Keep this "gdrive" remote? ให้พิมพ์ y แล้วกด Enter เพื่อยืนยันบันทึกค่า จากนั้นกด q เพื่อออกจากโปรแกรมคอนฟิก

วิธีทดสอบว่าเชื่อมต่อสำเร็จหรือไม่: รันคำสั่ง rclone about gdrive: หากเห็นข้อมูลพื้นที่ว่างแสดงว่าใช้งานได้ Rclone Configuration

ทดลองสั่ง Backup ด้วยตัวเอง

สมมติว่าโฟลเดอร์ข้อมูลอยู่ที่ /home/wasankds/gp/backup และต้องการเอาไปเก็บใน Google Drive ที่โฟลเดอร์ชื่อ gp_backup ใช้คำสั่งต่อไปนี้:

rclone copy /home/wasankds/gp/backup gdrive:gp_backup --progress

(พารามิเตอร์ --progress จะแสดงความเร็วและเปอร์เซ็นต์วิ่งให้เห็นชัดเจน)

คำแนะนำ: ถ้าต้องการให้บน Google Drive ลบไฟล์เก่าทิ้งอัตโนมัติถ้าเครื่อง Pi ลบไปแล้ว (ทำตัวเป็นกระจกเงาซิงค์ให้เหมือนกันเป๊ะ) ให้เปลี่ยนคำว่า copy เป็น sync
Rclone Configuration Rclone Configuration

ตั้งค่าให้ทำงานอัตโนมัติ (Cron job)

ตั้งเวลาระบบ Linux สั่งให้แบ็กอัปตัวเองอัตโนมัติตอนกลางคืน โดยเปิดตารางงานด้วยคำสั่ง:

crontab -e

(หากมีให้เลือก Editor ให้พิมพ์เลข 1 เพื่อใช้ nano)

เลื่อนไปบรรทัดล่างสุดแล้ววางคำสั่งนี้ลงไป (ตั้งเวลา 22:30 น. ทุกวัน):

30 22 * * * /usr/bin/rclone copy /home/wasankds/gp/backup gdrive:gp_backup

วิธีเซฟไฟล์: กด Ctrl + O (Enter) เพื่อบันทึก และ Ctrl + X เพื่อออก
ระบบจะขึ้น crontab: installing new crontab เป็นอันเสร็จสิ้น

Rclone Configuration
ต้องการรันวันละหลายรอบ?
หากต้องการรัน 2 ครั้ง (เช่น 22:30 น. และ 02:30 น.) ให้ใช้เครื่องหมายจุลภาค , คั่นแบบนี้:
30 22,2 * * * /usr/bin/rclone sync /home/wasankds/gp/backup gdrive:gp_backup

การสำรองข้อมูล MongoDB (Mongodump)

การทำ Cron job เพื่อดึงข้อมูลเฉพาะบาง Collection ออกมาจาก MongoDB แล้วเอาไปเซฟไว้ในโฟลเดอร์เพื่อส่งต่อให้ Rclone

คำสั่ง Mongodump แบบเจาะจง Collection

เราจะสกัดเอาข้อมูลเฉพาะบาง Collection ออกมาเป็นไฟล์ .bson โดยอัตโนมัติ:

mongodump --uri="mongodb://localhost:27017" --db=ชื่อฐานข้อมูล --collection=ชื่อคอลเลกชัน --out=/home/wasankds/gp/backup

หมายเหตุ: ตรวจสอบที่อยู่ของ mongodump ได้ด้วยคำสั่ง which mongodump

วิธีนำไปใส่ใน Cron job เพื่อเชื่อมต่อระบบ

กำหนดให้ Dump ข้อมูลออกมารอไว้ก่อนที่ Rclone จะทำงาน (เช่น Dump ตอน 22:00 น. เพื่อให้ทันรอบแบคอัป 22:30 น.) เปิดตั้งค่า Cron ด้วย crontab -e และเพิ่มคำสั่ง:

0 22 * * * /usr/bin/mongodump --uri="mongodb://localhost:27017" --db=my_database --collection=users --out=/home/wasankds/gp/backup

เมื่อถึงเวลา 22:00 น. ระบบจะ Dump ข้อมูลมาที่ /home/wasankds/gp/backup และเวลา 22:30 น. คำสั่ง Rclone ที่ตั้งไว้จะยกโฟลเดอร์นี้ขึ้น Google Drive ให้อัตโนมัติ จบกระบวนการสมบูรณ์