Tự động sao lưu toàn bộ dữ liệu của VPS thông qua Duplicity

24/06/2015

Nếu bạn là một nhà quản trị website chắc hẳn bạn đã rất thân thuộc với công việc backup dữ liệu hàng tuần để đảm bảo dữ liệu được bảo toàn và bảo mật. Việc backup dữ liệu trên WP có thể thực hiện tự động hóa, tuy nhiên trên VPS thì điều này lại trở nên khó khăn hơn, và đa số mọi người phải thực hiện bằng tay

Sau đây mình sẽ hướng dẫn các bạn cách tự động sao lưu toàn bộ dữ liệu của VPS thông qua Duplicity

Huong-dan-restore-vps-website-tren-vps-tu-vps-backup

1. Duplicity là gì ?

Duplicity là một công cụ hữu ích để có thể thực hiện remoted backup tự động. Một số ưu điểm của duplicity như:

  • Có chế độ Incremental backups (chỉ backup những file mới so với lần trước đó)
  • Có nhiều chế độ lưu trữ (SSH, rsync, FTP, Amazon S3, IMAP, Google Drive…)
  • Tích hợp chức năng mã hóa.
  • Dễ dàng cài đặt và sử dụng.

Trong bài viết này mình sẽ hướng dẫn các bạn backup web http://chiasecoupon.com chạy trên VPS CentOS của Cloudzin và lưu trên một VPS khác chuyên chứa dữ liệu (mình sử dụngRamnode, chỉ cần 128MB RAM (14.48$/năm) là đủ) thông qua ssh, những cái khác các bạn có thể tìm hiểu trên mạng.

Quá trình backup được thực hiện từ động mỗi ngày 1 lần vào 24h đêm.

Cấu trúc dữ liệu

– Toàn bộ dữ liệu được nén và lưu theo ngày trong thư mục /var/backups/. Điều này đảm bảo tốc độ tối ưu nhất và dễ dàng quản lý. Ví dụ:

  • /var/backups/2014-03-23/
    • db_2014-03-23.sql.gz
    • files_2014-03-23.zip

– Trên backup VPS cũng lưu theo ngày trong thư mục /var/backups/domain/. Ví dụ:

  • /var/backups/chiasecoupon.com/2014-03-23/
    • db_2014-03-23.sql.gz
    • files_2014-03-23.zip

Các bạn có thể tự sắp xếp dữ liệu phù hợp với nhu cầu bản thân và add thêm domain tùy ý.

Quy trình tự động sao lưu

  1. Sử dụng mysqldump để sao lưu database
  2. Dùng zip nén toàn bộ file lại
  3. Duplicity chuyển dữ liệu lên backup VPS

Chuẩn bị

– Tạo folder backup trên server và folder ngày hiện tại (mục đích để test, sau này quá trình tự động):

mkdir /var/backups/
mkdir /var/backups/2014-03-23/

– Tạo folder lưu trữ dữ liệu trên backup VPS

mkdir /var/backups/
mkdir /var/backups/chiasecoupon.com/
mkdir /var/backups/chiasecoupon.com/2014-03-23/

Giờ thì hãy tiến hành theo các bước sau, chú ý trong các lệnh mình hard code folder là /2014-03-23/để các bạn dễ dàng thực hiện theo. Ở bash script cuối cùng thì folder sẽ tự động được tạo theo như thời gian hiện tại của VPS.

Cài đặt duplicity

Sử dụng lệnh sau:

sudo yum install duplicity

Sao lưu MySQL

Sử dụng mysqldump:

mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u TaiKhoan -pMatKhauCuaBan Database | gzip -9 > /var/backups/2014-03-23/db_2014-03-23.sql.gz

Xem thêm Backup và Restore MySQL Database bằng dòng lệnh

Zip dữ liệu

zip -r /var/backups/2014-03-23/files_2014-03-23.zip  /home/chiasecoupon.com/public_html/ -q -x /home/chiasecoupon.com/public_html/wp-content/cache/***

Trong ví dụ trên mình không nén folder cache, nếu các bạn không muốn thì có thể bỏ đoạn -x /home/chiasecoupon.com/public_html/wp-content/cache/*** đi.

Chú ý chỉnh lại đường dẫn chứa website của bạn cho phù hợp.

Nếu như báo lỗi -bash: zip: command not found thì bạn cần chạy yum install zip trước.

Duplicity

Ở đây mình dùng một VPS bảo mật chỉ chuyên chứa dữ liệu thôi, duplicity sẽ dùng ssh để gửi lên. Nếu các bạn muốn dùng Amazon S3 hoặc Google Drive thì hãy tìm hiểu trên mạng nhé, cấu trúc dòng lệnh cũng tương tự.

Đầu tiên cần tạo ssh key để kết nối với ssh-keygen

ssh-keygen -C 'Duplicity Backup Key'

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/backup_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/backup_rsa.
Your public key has been saved in /root/.ssh/backup_rsa.pub.

Chú ý bước này bạn không điền passphrase nhé, để trống.

Giờ sẽ tiến hành copy key này lên backup VPS.

ssh-copy-id -i /root/.ssh/backup_rsa.pub "-p 22 12.34.56.78"

Và test lại xem bạn có thể login với key này hay không

ssh -i /root/.ssh/backup_rsa -p 22 root@12.34.56.78

Nếu kết nối thành công, chạy exit để thoát khỏi backup VPS và tiếp tục cài đặt.

duplicity full --no-encryption --ssh-options="-oProtocol=2 -oIdentityFile=/root/.ssh/backup_rsa" /var/backups/2014-03-23/ scp://root@12.34.56.78//var/backups/chiasecoupon.com/2014-03-23/

Ở đây mình chọn chế độ backup full chứ không phải incremental.

Nếu bạn muốn add thêm folder, hãy sử dụng option --include="/path/to/folder"

Nếu toàn bộ quá trình trên bạn thực hiện thành công, giờ hãy gộp tất cả lại vào 1 file bash script và chạy cronjob hàng ngày.

Tạo file script nano /root/backup.sh với nội dung như bên dưới của mình:

#!/bin/bash
{
    printf "subject:Chia Se Coupon Backup Reportnfrom:root@chiasecoupon.comnn"
    mkdir /var/backups/$(date +"%Y-%m-%d")/
    echo "Starting backup database..."
    mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u TaiKhoan -pMatKhauCuaBan Database | gzip -9 > /var/backups/$(date +"%Y-%m-%d")/db_$(date +"%H:%M_%d-%m-%Y").sql.gz
    echo "Starting backup files..."
    zip -r /var/backups/$(date +"%Y-%m-%d")/files_$(date +"%H:%M_%d-%m-%Y").zip /home/chiasecoupon.com/public_html/ -q -x /home/chiasecoupon.com/public_html/wp-content/cache/***
    echo "Starting duplicity..."
    duplicity full --no-encryption --ssh-options="-oProtocol=2 -oIdentityFile=/root/.ssh/backup_rsa" /var/backups/$(date +"%Y-%m-%d")/ scp://root@12.34.56.78//var/backups/chiasecoupon.com/$(date +"%Y-%m-%d")/
} | /usr/sbin/sendmail "admin@chiasecoupon.com"

Như các bạn thấy trong script trên, mình có add thêm lệnh gửi thông báo qua email sau khi chạy backup thành công.

Sau đó lưu file này lại, thêm quyền executive chmod +x /root/backup.sh, test một lần nữa xem toàn bộ quá trình sao lưu này thành công hay chưa với lệnh /root/backup.sh

Cronjob

Mình sẽ để tác vụ backup tự động thực hiện mỗi ngày bằng cách add thêm vào crontab.

crontab -e

Nhấn o để thêm dòng mới với nội dung:

0 0 * * * /root/backup.sh >/dev/null 2>&1

Để lưu lại và thoát bạn nhấn ESC, rồi gõ vào :wq nhấn Enter.

Như vậy là toàn bộ quá trình sao lưu dữ liệu lên backup VPS server đã được thực hiện tự động.

Lưu ý: có thể bạn cần thay đổi lại timezone thì cronjob mới hoạt động chính xác được.

Restore

Giờ thì chúng ta đã có những bản backup hàng ngày rồi, tuy nhiên làm thế nào để khôi phục lại website khi có vấn đề?

Đầu tiên bạn cần truy cập vào backup VPS server, đến thư mục chứa file backup sẽ thấy rất nhiều file kiểu như sau:

duplicity-full-signatures.20140322T142037Z.sigtar.gz
duplicity-full.20140322T142037Z.manifest
duplicity-full.20140322T142037Z.vol1.difftar.gz
duplicity-full.20140322T142037Z.vol2.difftar.gz
duplicity-full.20140322T142037Z.vol3.difftar.gz

Đó là cấu trúc dữ liệu của duplicity, để khôi phục lại như file nén db và files như ban đầu, hãy sử dụng lệnh:

duplicity restore --no-encryption --file-to-restore / file:///var/backups/chiasecoupon.com/2014-03-23 /var/backups/chiasecoupon.com/extract

Synchronizing remote metadata to local cache...
Copying duplicity-full-signatures.20140322T142037Z.sigtar.gz to local cache.
Copying duplicity-full.20140322T142037Z.manifest to local cache.
Last full backup date: Sat Mar 22 21:20:37 2014
GnuPG passphrase:

Truy cập vào folder /var/backups/chiasecoupon.com/extract bạn sẽ thấy toàn bộ dữ liệu đã được giải nén.

Kết luận : Việc backup dữ liệu thường xuyên là việc các bạn nên và cần làm ngay bây giờ nếu như bạn chưa hề backup lần nào, tránh trường hợp đáng tiếc có thể xảy ra với dữ liệu của bạn

Chúc các bạn thực hiện thành công!

Tự động sao lưu toàn bộ dữ liệu của VPS thông qua Duplicity
Rate this post

About admin

Thanh Hồng là một hot blogger công nghệ của VDO. Cô đã có 5 năm kinh nghiệm làm việc tại phòng Marketting và Sale tại VDO. Cô sở hữu rất nhiều website và blog liên quan đến công nghệ, dịch vụ máy chủ, sản phẩm worktion, phần mềm bản quyền,…Cô đã cố gắng học hỏi, tích lũy và truyền đạt hết những kinh nghiệm đó trong các bài viết chia sẻ của mình. Blog của Thanh Hồng là một trong những nguồn thông tin tốt nhất giúp bạn lựa chọn được một sản phẩm, dịch vụ công nghệ hoàn hảo. Đặc biệt vì đam mê tìm hiểu về công nghệ nên cô đã dành rất nhiều thời gian đi cập nhật các tin tức công nghệ mới, các giải pháp mới, hoàn hảo nhất phù hợp cho nhiều mô hình doanh nghiệp và chia sẻ chúng theo quan điểm thú vị của riêng mình.

Hotline tư vấn miễn phí