Cách backup Website từ VPS CentOS lên Google Drive

Hôm trước đã hướng dẫn cách làm sao để tự động backup Source code và DataBase rồi. Nhưng backup xong vẫn nằm trên VPS đó, trong trường hợp VPS có chuyện thì rất nguy hiểm, mà get về thủ công thì rất lâu với những ai quản trị nhiều site.

Xem bài viết: Tự động backup Database và Source code bằng Crontab

Hôm nay sẽ giải quyết vấn đề là làm thế nào để quẵng tất cả các file backup đó lên Google drive.

I. Tạo google project

1.Vào đây: https://console.developers.google.com/project

Tạo 1 Project mới.

click "Create Project" ->  Project name "Nhập tên tùy ý ví dụ: saoluu"

2.Vào đây: https://console.developers.google.com/apis/library

Chọn project vừa tạo -> Overview -> và Enabled: Drive API, Admin SDK, Google Apps Marketplace SDK

3.Tiếp tục chọn tab Credentials.

Add Credentials -> Service account -> Check P12 -> Create

4.Xong thì nhận được 1 file có tên dạng saoluu-5e923c74024b.p12 lưu vào 1 nơi cẩn thận sau này dùng.

Và cài mail: xxxxxxxxxxxx[email protected]

II. Tạo 1 thư mục trên Google Drive và chia sẻ với mail trên.

Bước này đơn giản là tạo 1 thư mục mới trên Google Drive

Chú ý:

  • Chia sẻ với mail đã nhận ở trên: xxxxxxxxxxxx[email protected] và phát quyền được phép chỉnh sửa.
  • Link của thư mục có dạng: https://drive.google.com/drive/u/0/folders/0B18aFuiEcupjNVoxSVloY2mwMJU nhớ đoạn đánh dấu màu đỏ, xíu nữa dùng.

III. Thao tác trên VPS.

1.Cài đặt một số Pack cần thiết, mình dùng CentMinMod thấy 2 cái này là đủ

yum -y install python-pip
pip install --upgrade google-api-python-client

2.Tải file này về: configs

Giải nén ra được thư mục: configs -> copy file saoluu-5e923c74024b.p12 đã làm ở bước I.4 bỏ vô và edit file config.json với nội dung như sau:

{
 "service_account":"xxxxxxxxxxxx-4rl923m4nktdrnks20gudca0j1ldm7mg@developer.gserviceaccount.com",
 "private_key12_path":"saoluu-5e923c74024b.p12",
 "backup_folder_id":"0B18aFuiEcupjNVoxSVloY2mwMJU",
 "description" : "Backup VPS to Google Drive",
 "max_file_in_folder": 100
}

Giải thích:

  • “service_account”: là cái email đã nhận ở bước 1.4
  • “private_key12_path”: đường dẫn cái file đã nhận ở bước 1.4 (mới copy vô)
  • “backup_folder_id”: là cái đuôi phía sau của url thư mục Google drive đã nhận ở bước II
  • “max_file_in_folder”: là số file tối đa của thư mục trên google, ở đây là 100 trong trường hợp nhiều hơn sẽ xóa file cũ nhất.

3. Upload thư mục configs lên /root/ của VPS

Set quyền cho file backup.py trong /root/configs là 755, tức là có quyền thực thi.

Chạy thử:

python /root/configs/backup.py /root/configs/config.json /var/backups/source.zip

Giải thích:

  • “/root/configs/backup.py”: nơi chứa file thực thi python
  • “/root/configs/config.json”: nơi chứa file cấu hình
  • “/var/backups/source.zip”: file muốn đưa lên Google drive

Nếu quá trình chạy hoàn tất và không báo lỗi, kiểm tra trên google drive có file source.zip thì xin chúc mừng.

Trong trường hợp bị lỗi thì thêm mấy anh này vô.

yum update
yum groupinstall "Additional Development" "Development tools" 
yum install libffi-devel
pip install pycrypto
easy_install pyopenssl

Nếu bị lỗi: No crypto library available thì chạy dòng này:

sudo pip2 install --upgrade --force pip
pip install PyOpenSSL

 

IV: Nâng cao (Hẹn giờ tự động backup, đẩy lên Google drive từ A – Z)

Bài tự động backup thì đã hướng dẫn ở đây: https://tangduongtrieu.com/tu-backup-database-va-source-code-bang-crontab-trong-centminmod/

Nhưng giờ có chỉnh sửa xíu:

1. Tạo file backup.sh trong /root/ và chmod quyền thực thi 755 với nội dung như sau:

#!/bin/bash
{
 printf "subject:Backup for VPS\nfrom:mail_nguoi_gui\n\n"
 echo "Deleting file Old Backups..."
 rm -rf /var/backups
 mkdir /var/backups
 chmod -R 777 /var/backups
 mkdir /var/backups/$(date +"%Y-%m-%d")/
 mkdir /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/
 
 echo "Starting backup database for websitecuaban.com..."
 mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u username_cuaban -h 127.0.0.1 -p'matkhau' database_cuaban | gzip -9 > /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").sql.gz
 echo "Starting backup files for websitecuaban.com..."
 zip -r /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").zip /home/nginx/domains/websitecuaban.com/public
 
 echo "Upload To Google Drive"
 python /root/configs/backup.py /root/configs/config.json /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").sql.gz
 python /root/configs/backup.py /root/configs/config.json /var/backups/$(date +"%Y-%m-%d")/websitecuaban.com/websitecuaban_$(date +"%Y-%m-%d").zip
 } | /usr/sbin/sendmail "[email protected]"

Thay phần nội dung màu đỏ cho phù hợp với Website của bạn.

Sau khi chạy nếu kiểm tra oke hết thì chuyển đến bước tiếp theo là tự động chạy backup vào 1 ngày định trước.

2. Crontab cho backup.sh

Gõ lệnh

crontab -e

Nhập

@weekly /root/backup.sh

Lưu và thoát

Ctrl + X --> Y --> Enter

Để chắc chắn crontag luôn chạy thì gõ thêm 3 lệnh này nữa.

service crond start
service crond restart
chkconfig crond on

Done!

Tham khảo và chỉnh sửa từ: https://dethoima.info/tu-dong-backup-du-lieu-len-google-drive/

Gốc của Source thì nằm ở đây: https://github.com/bachvtuan/Backup-To-Google-Drive

5 thoughts on “Cách backup Website từ VPS CentOS lên Google Drive”

  1. Chào bác Tang,

    Em download được file key về rồi file kiểu dạng xxxx-privatekey.p12
    Nhưng em làm sao để thấy được hay có được email dạng [email protected]

    Mong bác chỉ giúp thêm

  2. Trong phần Service account thì mình chọn cái nào ạ:
    Compute Engine default service account hay là
    Compute Engine default service account

    Mong bác chỉ giúp

  3. File “/root/configs/backup.py”, line 26
    print “not allow”
    ^
    SyntaxError: Missing parentheses in call to ‘print’. Did you mean print(int “not allow”)?

    Mình bị lỗi như trên thì làm như nào vậy? Chỉ giúp mình với ad

Leave a Reply

Your email address will not be published. Required fields are marked *