Sao lưu sql và aphache web trên linux bằng éync

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:

  • Hướng dẫn đăng nhập vào VPS Linux với giao thức SSH.

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

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

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.

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

Để 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é.

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:

(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,

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

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.

(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.

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:

  • Hướng dẫn sử dụng các dịch vụ tại AZDIGI.

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:

  • Hotline 247: 028 730 24768 (Ext 0)
  • Ticket/Email: Bạn dùng email đăng ký dịch vụ gửi trực tiếp về: .

Author Bio

Chào mọi người, mình là Kiên - hiện đang công tác tại Phòng Kỹ thuật AZDIGI. Trong quá trình làm việc mình có cơ hội được tiếp xúc với khá nhiều các vấn đề liên quan đến Website/Hosting/VPS/Server, do đó mình viết lại các hướng dẫn này nhằm chia sẻ kiến thức, cũng như tạo một môi trường để chúng ta giao lưu và học hỏi lẫn nhau, trau dồi thêm nhiều kiến thức bổ ích hơn nữa.

Nếu các bạn có thắc mắc hoặc cần trao đổi thêm, liên hệ với mình theo thông tin dưới đây:

- Facebook: Đàm Trung Kiên
- Blog: https://damtrungkien.com/

Articles by Đàm Trung Kiên