การสำรองข้อมูลระดับเซิร์ฟเวอร์
การสำรองข้อมูลด้วย Rclone (Google Drive)
Rclone เปรียบเสมือน "swiss army knife" ของ Cloud Storage มันสามารถเชื่อมต่อกับ Google Drive ได้โดยตรง ปลอดภัย และสามารถสั่ง Sync ข้อมูลเป็นโฟลเดอร์ได้ง่ายมาก
การตั้งค่า rclone ผูกกับ GDrive
ติดตั้งและตั้งค่าเบื้องต้นบน Pi
- เปิด Terminal บน Pi แล้วรันคำสั่ง:
sudo apt-get updatesudo apt-get install rclone -y - พิมพ์คำสั่งเพื่อเริ่มตั้งค่า:
rclone config
- เลือก
n(New remote) -
ตั้งชื่อตามต้องการ เช่น
gdrive
- ระบบจะแสดงรายชื่อ Cloud ให้หาเลขที่เป็น Google Drive (มักจะเขียนว่า drive)
แล้วพิมพ์เลขนั้น
หมายเหตุ: ถ้าตั้งค่าผิด ให้เข้าใหม่แล้วลบ จะมีตัวเลือกdเพิ่มเข้ามา - ช่อง
client_idและclient_secretให้กด Enter ข้ามไปก่อนได้ - เลือก
1(Full access to all files) -
ช่อง
root_folder_idและservice_account_fileให้กด Enter ข้ามไป
- เมื่อถึงข้อความ Edit advanced config? ให้ตอบ
n
การล็อกอินบัญชี Google (Use auto config?)
เมื่อระบบถาม Use auto config? ให้เลือกตามสภาวะเครื่อง:
- ต่อจอใช้งานผ่าน Desktop: ตอบ
yระบบจะเปิด Browser ให้คุณล็อกอิน Google Account และกดอนุญาตสิทธิ์
- ใช้งานแบบ Headless (SSH): ตอบ
nแล้วทำตามคำสั่งบนหน้าจอ (ระบบจะให้ลิงก์มาเปิดบนคอมพิวเตอร์ของคุณเพื่อเอา Code มาวาง) แนะนำให้ใช้วิธี Forward Port ตามหัวข้อถัดไป
การเปิดท่อเชื่อมพอร์ต (Port Forwarding) บน Windows
- กลับมาที่หน้าจอ PowerShell บน Windows ของคุณ
- พิมพ์คำสั่งด้านล่างนี้เพื่อเปิด SSH ตัวใหม่ที่จะทำหน้าที่ Forward พอร์ต
53682จากเครื่อง Pi มาโผล่ที่เครื่อง Windows อัตโนมัติ:ssh -L 53682:localhost:53682 wasankds@<ใส่ IP ของ Pi># ตัวอย่าง: ssh -L 53682:localhost:53682 [email protected] - ใส่รหัสผ่านของ Pi เพื่อล็อกอินให้เรียบร้อย และเปิดหน้าต่าง PowerShell นี้ค้างไว้ห้ามปิด
ยืนยันการเชื่อมต่อและอนุญาตสิทธิ์
- เปิด Web Browser (Chrome หรือ Edge) บนเครื่อง Windows
- ก๊อปปี้ลิงก์นี้ไปวางที่ช่องใส่ URL แล้วกด Enter: http://127.0.0.1:53682/auth
- หน้าจอ Google จะเด้งขึ้นมาให้คุณเลือกบัญชีและกด "อนุญาต (Allow)"
- กลับไปดูหน้าจอ SSH บน Pi ระบบจะดึงรหัสมาล็อกอินให้ตัวเองโดยอัตโนมัติ ให้กดยืนยันตอบ
yจนเสร็จสิ้น
การตั้งค่า 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:
หากเห็นข้อมูลพื้นที่ว่างแสดงว่าใช้งานได้
ทดลองสั่ง Backup ด้วยตัวเอง
สมมติว่าโฟลเดอร์ข้อมูลอยู่ที่ /home/wasankds/gp/backup และต้องการเอาไปเก็บใน Google Drive
ที่โฟลเดอร์ชื่อ gp_backup ใช้คำสั่งต่อไปนี้:
rclone copy /home/wasankds/gp/backup gdrive:gp_backup --progress
(พารามิเตอร์ --progress จะแสดงความเร็วและเปอร์เซ็นต์วิ่งให้เห็นชัดเจน)
copy เป็น sync
ตั้งค่าให้ทำงานอัตโนมัติ (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 เป็นอันเสร็จสิ้น
หากต้องการรัน 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 ให้อัตโนมัติ จบกระบวนการสมบูรณ์