Home Máy chủ LinuxWeb Server Tạo Script sao lưu dữ liệu trên máy chủ Linux

Tạo Script sao lưu dữ liệu trên máy chủ Linux

by Thạch Phạm
Published: Last Updated on
A+A-
Reset

Tạo Script sao lưu dữ liệu trên máy chủ Linux với 4 bước đơn giản..

Giới thiệu

Chắc hẳn trong quá trình vận hành máy chủ hay website, vấn đề backup dữ liệu luôn là vấn đề hàng đầu cần được lưu ý. Việc backup dữ liệu website thường xuyên khiến bạn luôn có một phương án dự phòng tốt nhất cho trường hợp xấu có thể xảy ra với website của mình.  

Trong quá trình sử dụng, việc bạn thao tác xoá sửa nhầm dữ liệu hoặc lỗi bị động từ nhà cung cấp dịch vụ đều có thể khiến cho dữ liệu của bạn bị thất thoát và không thể lấy lại được. Chưa kể nếu bạn sử dụng dịch vụ VPS, các bạn sẽ bị hạn chế về vấn đề hỗ trợ Backup từ nhà cung cấp, vì thường các nhà cung cấp chỉ hỗ trợ Backup dữ liệu theo tuần và backup đó là Backup full của VPS.  Vậy nếu trong trường hợp các bạn cập nhật dữ liệu hàng ngày, và chẳng may bị lỗi hay mất dữ liệu website cần được khôi phục, thì đúng là vấn đề nan giải.

Vậy làm sao để bạn có thể chủ động backup được dữ liệu của mình một cách nhanh chóng hoặc hơn nữa là thiết lập để máy chủ tự động chạy Backup theo lịch mà bạn muốn thì đây chắc hẳn là câu hỏi mà nhiều người thắc mắc cũng như đang tìm phương án cho vấn đề này.

Vậy ở bài viết này AZDIGI sẽ hướng dẫn bạn cách backup dữ liệu tự động thông qua Shell Script , các bạn cùng đón xem ở bước tiếp theo nhé.

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

Bước 1: SSH vào máy chủ Linux của bạn

Để tạo Script Backup dữ liệu trên Linux việc đầu tiên chúng ta cần làm là SSH hoặc truy cập VPS hoặc máy chủ của bạn với quyền root trước. Nếu bạn chưa biết cách SSH vào VPS hoặc Server của bạn thì bạn có thể tham khảo bài viết hướng dẫn sau:

Sau khi đã SSH thành công chúng ta tiếp tục với bước 2 để tiếp tục cấu hình.

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

Các bạn vui lòng làm theo lần lượt các lệnh bên dưới để tạo File cũng như thêm nội dung script (các bạn có thể thay thế đường dẫn, tên file/folder tùy ý).

  • Tạo File chứa script
AZDIGI Tutorial
vi /bin/auto-backup
    

Giải thích lệnh bên trên:

– Lệnh 1: Tạo file auto-backup tại thư mục /bin

  • Thêm nội dung bên dưới vào file đã tạo
#!/bin/bash

 echo "Backup website Sitewp.tk"
 mkdir /home/backup/$(date +"%Y-%m-%d")/                         ## Tạo đường dẫn chứa File Backup
 mkdir /home/backup/$(date +"%Y-%m-%d")/sitewp.tk/
          
 echo "Starting backup database for sitewp.tk..."                ## Backup Database
 mysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u sql_sitewp_tk  -p'EjWyP5fJmYSzSHZf' sql_sitewp_tk | gzip -9 > /home/backup/$(date +"%Y-%m-%d")/sitewp.tk/Database_$(date +"%Y-%m-%d").sql.gz

 echo "Starting backup files for sitewp.tk..."                   ## Backup Source
 zip -r /home/backup/$(date +"%Y-%m-%d")/sitewp.tk/Source_$(date +"%Y-%m-%d").zip /www/wwwroot/sitewp.tk/ -q

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

Chú thích các phần bôi đậm bên trên:

  • Tên website cần Backup: sitewp.tk
  • User Database: sql_sitewp_tk
  • Pass: EjWyP5fJmYSzSHZf
  • Tên Database: sql_sitewp_tk
  • Đường dẫn lưu Backup: /home/backup/sitewp.tk/
  • Đường dẫn website cần Backup: /www/wwwroot/sitewp.tk
  • Đường dẫn lưu file backup Source + Database: /home/backup
  • Tên File Backup Source: Source.zip
  • Ten File Backup Database: Database.sql.gz

Lưu ý: Các bạn chỉ chỉnh sửa phần được bôi đậm bằng thông tin của các bạn, còn lại các bạn nên giữ nguyên nhé.

  • Phân quyền cho File auto-backup
AZDIGI Tutorial
chmod +x /bin/auto-backup
    

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

CleanShot 2022 05 11 at

Dưới đây là các bản backup công hàng ngày của mình.

CleanShot 2022 05 27 at

Để xem dữ liệu của từng ngày Backup, bạn chỉ cần cd vào đúng thư mục mình cần là được nhé.

CleanShot 2022 05 11 at

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

Ví dụ ở đây mình sẽ thiết lập thời gian chạy Backup là 1 ngày 1 lần , thì cách thiết lập Cron sẽ có cấu trúc như sau:

AZDIGI Tutorial
(crontab -u root -l ; echo "0 2 * * * auto-backup >> /home/backup/log-backup.txt") | crontab -u root -
systemctl restart crond
    

Giải thích lệnh trên:

– Lệnh 1: Thiết lập Cron Backup chạy vào 02:00 giờ sáng hàng ngày, và log sẽ được ghi lại tại đường dẫn /home/backup/log-backup.txt

– Lệnh 2: Khởi động lại dịch vụ Crond

Sau khi thêm Cron, bạn sử chạy lệnh bên dưới để kiểm tra Cron đã thêm thành công chưa,

AZDIGI Tutorial
cat /var/spool/cron/root
    

Nếu kết quả ra như hình là thêm Cron thành công.

CleanShot 2022 05 11 at

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

Do script này sẽ lưu trữ File Backup trực tiếp trên VPS nên về lâu dài sẽ chiếm dung lượng VPS. Nên chúng ta sẽ 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 7 bản backup gần nhất. Thời gian cron chạy vào lúc 02:00 sáng hàng ngày.

AZDIGI Tutorial
(crontab -u root -l ; echo "0 2 * * * find /home/backup -type d -mtime +7 -exec rm -rf {} +") | crontab -u root -
systemctl restart crond
    

Và dưới đây là kết quả các bản backup cũ bị xóa và chỉ giữ lại 7 ngày gần nhất.

CleanShot 2022 05 27 at

Như vậy, mình đã hướng dẫn các bạn chi tiết cách tạo Cron Backup tự động cho website của mình trên máy chủ Linux. Việc tạo Cron Backup định kỳ sẽ giúp các bạn đảm bảo được dữ liệu của mình trong một số trường hợp xấu có thể xảy ra. 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ực hiện thành công.

Các bạn có thể tham khảo thêm các hướng dẫn sử dụng khác tại link bên dưới:

Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới:

5/5 - (2 votes)

Tham gia nhóm hỗ trợ Server - Hosting

Tham gia nhóm Hỗ trợ Server - Hosting & WordPress để cùng nhau hỏi đáp và hỗ trợ các vấn đề về WordPress, tối ưu máy chủ/server.

Tham gia ngay

Bài viết cùng chuyên mục

AZDIGI – Không chỉ là đơn vị hàng đầu trong lĩnh vực Web Hosting và Máy chủ, chúng tôi mong muốn mang lại những kiến thức bổ ích nhất và luôn cập nhật thường xuyên cho cộng đồng người đam mê thiết kế website, công nghệ,…

Vui lòng không sao chép nội dung nếu chưa xin phép. Designed and Developed by PenciDesign