Nội dung bài viết
Tại sao cần backup dữ liệu?
Backup dữ liệu website thường xuyên là rất quan trọng vì những lý do sau:
- Phòng ngừa mất dữ liệu: Các sự cố không mong muốn như hư hỏng phần cứng, lỗi phần mềm, tấn công từ hacker, hoặc sự cố kỹ thuật có thể khiến bạn mất dữ liệu quan trọng. Backup giúp bạn khôi phục dữ liệu nhanh chóng.
- Bảo mật: Nếu website của bạn bị tấn công bởi malware hoặc ransomware, bạn có thể khôi phục lại dữ liệu từ bản backup thay vì phải trả tiền cho hacker.
- Khôi phục nhanh chóng: Trong trường hợp website gặp sự cố, bạn có thể khôi phục lại hoạt động nhanh chóng từ các bản backup, giúp giảm thiểu thời gian ngừng hoạt động và tác động tiêu cực đến người dùng.
- Bảo vệ chống lại lỗi của người dùng: Nhân viên có thể vô tình xóa hoặc ghi đè dữ liệu quan trọng. Có bản backup sẽ giúp khôi phục dữ liệu bị mất một cách dễ dàng.
- Tuân thủ quy định pháp lý: Nhiều ngành công nghiệp yêu cầu doanh nghiệp phải lưu trữ và bảo vệ dữ liệu. Backup thường xuyên giúp bạn tuân thủ các quy định này và tránh bị phạt.
- Tạo điểm khôi phục: Backup thường xuyên giúp bạn tạo các điểm khôi phục, từ đó có thể quay lại trạng thái trước đó của website nếu có vấn đề xảy ra sau khi cập nhật hoặc thay đổi cấu hình.
Hướng dẫn thực hiện
Ưu điểm của script backup là bạn có thể áp dụng nó trên tất cả các VPS/Server. Việc duy nhất bạn cần làm là thay thế đúng đường dẫn và thông tin trên VPS/Server của mình. Bây giờ hãy bắt đầu tạo script với các bước dưới đây.
Bước 1: Tạo Script Backup
- Tạo file backup_full_vps.sh
Ví dụ ở đây mình sẽ tạo và đặt tên cho file chứa script là backup_full_vps.sh
, và file này mình sẽ đặt tại đường dẫn /root/script
. Các tạo nhanh bằng cách sử dụng các lệnh sau:
mkdir /root/script # Tạo Folder chứa file backup_full_vps.sh vi /root/script/backup_full_vps.sh # Tạo và chỉnh sửa nội dung file backup_full_vps.sh
Sau khi tạo xong file backup_full_vps.sh
, bạn hãy copy đoạn script bên dưới và dán vào file vừa tạo.
#!/bin/bash
#Auth: DAMTRUNGKIEN.COM
TIMESTAMP=$(date +"%d-%m-%Y") ## Định dạng ngày ngày/tháng/năm
BACKUP_DIR="/root/backup/$TIMESTAMP" ## Đường dẫn lưu Backup trên VPS
MYSQL_USER="root" ## Nhập User Root MYSQL
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="Nhap_pass_root_mysql" ## Nhập Pass Root MYSQL
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0
########## Backup Mysql ##########
mkdir -p "$BACKUP_DIR/Mysql"
echo "Backup Database In Process";
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD $db | gzip > "$BACKUP_DIR/Mysql/$db.gz"
done
echo "Backup Database Successful";
echo '';
########## Backup Source ##########
mkdir -p "$BACKUP_DIR/Source"
echo "Backup Source In Process";
# Loop through /home directory
for D in /home/*; do
if [ -d "${D}" ]; then #If a directory
domain=${D##*/} # Domain name
echo "- "$domain;
zip -r $BACKUP_DIR/Source/$domain.zip /home/$domain/public_html/ -q -x *.zip *.error_log *.access_log
fi
done
echo "Backup Source Successful";
echo ''
Trong đoạn script trên, bạn chỉ cần để ý các phần mình bôi đỏ và thay thế chúng tương ứng như sau:
- /root/backup: Đường dẫn lưu Backup trên VPS của bạn
- pass_root_mysql : Mật khẩu Root MYSQL của bạn
- Nếu cấu trúc website trên VPS nằm tại /home/domain.com/public_html thì điền tương ứng: /home/$domain/public_html/
- Nếu cấu trúc website trên VPS nằm tại /home/user/domain.com/public_html thì sửa lại thành /home/user/$domain/public_html/
- Nếu bạn cần loại bỏ một số định dạng file khi backup thì thêm option: -q -x *.zip *.error_log *.access_log (Ví dụ ở đây mình loại bỏ tất cả các file có đuôi .zip .access_log .error_log )
Ví dụ mình có 10 website nằm tại đường dẫn /home
, thì script trên sẽ backup toàn bộ Database và Source code của các website tại /home
, sau đó file backup sẽ được lưu tại đường dẫn được chỉ định là /root/backup/
- Phần quyền thực thi cho File
Sau khi tạo và thêm script hoàn tất, bạn cần phân quyền thực thi cho file với lênh sau:
chmod +x backup_full_vps.sh
Lưu ý: Do File backup sẽ lưu trực tiếp trên VPS, nên các bạn cần tính toán kỹ dung lượng của VPS để tránh tình trạng đầy dung lượng do FIle backup.
Bước 2: Tạo Cron để chạy script backup định kỳ
Để việc backup được thực thi tự động, bạn có thể tạo cron trên VPS để backup được chạy định kỳ.
- Tạo cron
crontab -e
- Thêm thời gian tự động thực thi script
Cụ thể ở đây mình sẽ thiết lập thời gian tự động chạy script là vào lúc 6h sáng các ngày 1,7,14,21,30 hàng tháng. Các bạn có thể tham khảo cấu hình bên dưới, hoặc điều chỉnh lại theo mốc thời gian mà các bạn muốn.
0 6 1,7,14,21,30 * * /bin/bash /root/script/backup_full.sh > /dev/null 2>&1
Bước 3: Kiểm tra kết quả
Và như trước đó mình có cấu hình đường dẫn lưu File backup là /root/backup/
, bây giờ mình sẽ truy cập vào đúng đường dẫn /root/backup/
để kiểm tra các bản backup. Và như hình dưới đây các bạn có thể thấy, File backup của ngày 7 đã được tạo vào lúc 6h sáng, đúng với thiết lập của mình ở Bước 2. Backup sẽ có 2 thư mục là Source và Mysql riêng biệt, các bạn có thể dễ dàng quản lý và sử dụng khi cần.
Tổng kết
Hy vọng bài viết trên sẽ giúp các bạn có thêm phương án backup dữ liệu website hiệu quả, từ đó đảm bảo được dữ liệu và phòng ngừa các rủi ro có thể xảy ra.
Chúc các bạn thực hiện thành công.!