Tạo script sao lưu dữ liệu trên Linux

Tác giả: 19/09/2022

Giới thiệu

Trong quá trình vận hành máy chủ hay website. Backup dữ liệu luôn là vấn đề hàng đầu được ưu tiên. Việc backup dữ liệu website thường xuyên khiến bạn luôn có phương pháp dự phòng cho trường hợp xấu nhất có thể xảy ra.

Ở bài viết này Nhân Hòa sẽ hướng dẫn các bạn cách tạo script backup dữ liệu tự động theo ngày.

Hướng dẫn thực hiện

Bước 1: SSh vào máy chủ Linux

Để tạo Script Backup dữ liệu trên Linux, việc đầu tiên chúng ta cần làm là SSH vào VPS hoặc máy chủ với quyền root.

Bước 2: Tạo script backup dữ liệu (Source + Database)

Tạo file chứa script.

vi /bin/auto-backup

Thêm nội dung bên dưới vào file đã tạo.

#!/bin/bash

echo "Backup website tubui.xyz"
####### Tạo đường dẫn chứa File Backup
mkdir /home/backup/$(date +"%Y-%m-%d")/
mkdir /home/backup/$(date +"%Y-%m-%d")/tubui.xyz/

####### Backup Database
echo "Starting backup database for tubui.xyz..."
mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u tubt_us -p'Nhanhoa@123' tubt_db | gzip -9 > /home/backup/$(date +"%Y-%m-%d")/tubui.xyz/Database_$(date +"%Y-%m-%d").sql.gz

####### Backup Source
echo "Starting backup files for tubui.xyz..."
zip -r /home/backup/$(date +"%Y-%m-%d")/tubui.xyz/Source_$(date +"%Y-%m-%d").zip /home/tubt/public_html/ -q

echo "Backup Database & Source thanh cong vao luc $(date +"%Y-%m-%d")!"
echo "File backup da duoc luu tai: /home/backup/tubui.xyz"

Chú thích

– Tên website cần backup: tubui.xyz

– Đường dẫn lưu file backup: /home/backup/tubui.xyz

– User Database: tubt_us

– Password: NhanHoa@123

– Tên Database: tubt_db

– Đường dẫn đến source code của website cần backup

– Đường dẫn lưu file backup Source + Database: /home/backup

– Tên file Backup Source: Source.zip

– Tên file Backup Database: Database.sql.zip

Phân quyền cho file auto-backup

chmod +x /bin/auto-backup

Tạo đường dẫn chưa file backup

mkdir /home/backup

Sau khi phân quyền xong, bạn hãy thử gõ tên file script để kiểm tra xem script có hoạt động hay không. Nếu chạy được như hình thì đã cấu hình thành công

Dưới đây là đường dẫn chứa file backup

Bước 3: Tạo Cron để thiết lập thời gian chạy script

Các bạn có thể tìm hiểu thêm về Crontab tại bài viết sau

Tại ví dụ này mình sẽ thiết lập thời gian backup là 1 ngày 1 lần, cú pháp thiết lập Cron sẽ có cấu trúc như sau:

crontab -e

Sau đó thêm cú pháp sau

0 0 * * * auto-backup >> /home/backup/log-backup.txt

Khởi động lại Cron

systemctl restart crond

Sau khi thêm Cron, bạn sử dụng lệnh bên dưới để kiểm tra Cron đã được thêm thành công bằng lệnh sau:

cat /var/spool/cron/root

Hoặc

crontab -l

Nếu kết quả như hình bên dưới là thêm Cron thành công.

Sau đây là các bản backup chạy định kỳ trên VPS của mình.

Bước 4: Tạo Cron xóa Backup định kỳ

Do script này sẽ lưu trữ file trực tiếp trên VPS nên về lâu dài sẽ chiếm dung lượng của VPS. Vì thế chúng ta cần thiết lập Cron để xóa các File backup cũ định kỳ, ví dụ ở đây mình sẽ tạo Cron xóa các File Backup cũ và chỉ giữ lại 3 bản backup gần nhất. Thời gian cron chạy vào lúc 01:00 sáng hàng ngày.

0 1 * * * find /home/backup -type d -mtime +3 -exec rm -rf {} +

systemctl restart crond

Tổng kết

Như vậy Nhân Hòa đã hướng dẫn các bạn cách tạo Cron Backup tự động. Hy vọng bài viết này hữu ích với các bạn. Chúc các bạn thành công !

Nếu trong quá trình thực hiện theo hướng dẫn mà gặp phải vấn đề hoặc có điều gì thắc mắc thì bạn cứ để lại phản hồi bên dưới. Xin chào các bạn và hẹn gặp lại các bạn trong các bài viết sau tại wiki.nhanhoa.com

Trả lời