Mã nguồn và cơ sở dữ liệu là hai yếu tố vô cùng quan trọng đối với một trang web. Vì vậy, việc thiết lập một quy trình sao lưu tự động hàng ngày là rất quan trọng để đảm bảo rằng nếu xảy ra sự cố, chúng ta có thể hoàn tất việc khôi phục dữ liệu một cách hoàn toàn.
Script tự động backup
Sử dụng đoạn mã dưới đây viết bằng Shell Script, bạn có thể tự động sao lưu mã nguồn và cơ sở dữ liệu (MySQL/MariaDB) hàng ngày trên máy chủ Linux bằng việc sử dụng Cron Job.
“`shell
#!/bin/bash
# Đường dẫn thư mục lưu trữ các file backup
backup_dir=”/path/to/backup/directory”
# Tên file backup mã nguồn
source_backup=”source_$(date +\%Y\%m\%d).tar.gz”
# Tên file backup cơ sở dữ liệu
db_backup=”db_$(date +\%Y\%m\%d).sql”
# Thực hiện sao lưu mã nguồn
tar -czf “$backup_dir/$source_backup” /path/to/source/code
# Thực hiện sao lưu cơ sở dữ liệu
mysqldump -u your_username -pyour_password your_database > “$backup_dir/$db_backup”
# Nếu bạn sử dụng MariaDB, thay “mysqldump” bằng “mariadb-dump”
# Xóa các backup cũ hơn 7 ngày
find “$backup_dir” -type f -name “source_*” -mtime +7 -exec rm {} \;
find “$backup_dir” -type f -name “db_*” -mtime +7 -exec rm {} \;
# Lưu ý: Hãy thay đổi các giá trị như đường dẫn và thông tin cơ sở dữ liệu theo cài đặt của bạn.
“`
Lưu ý rằng bạn cần điều chỉnh đường dẫn, tên người dùng và mật khẩu cơ sở dữ liệu, và cài đặt Cron Job để thực hiện đoạn mã này hàng ngày. Đoạn mã này sẽ sao lưu mã nguồn và cơ sở dữ liệu hàng ngày và tự động xóa các bản sao lưu cũ hơn 7 ngày để tiết kiệm không gian lưu trữ.
Với:
- /opt/backup là thư mục lưu trữ các bản backup
- /path/to/source/code là thư mục lưu trữ source code của website
- <database_name> là tên của CSDL
- <database_user> là tên của User của MySQL/MariaDB Database
Phân quyền cho script backup
sudo chmod +x /opt/scripts/backup.sh
Đoạn script ở trên ở lệnh mysqldump mình không sử dụng tham số -p để tránh đặt password trong script và cảnh bảo khi thực hiện lệnh mysqldump. Thay vào đó, mình setting username + password vào file config my.conf của MySQL/MariaDB.
Mở file /etc/my.conf, tìm đển đoạn [mysqldump] và thêm các tham số user và password của MySQL/MariaDB vào sau:
[mysqldump] user=<database_user> password=<password>
Restart lại dịch vụ MySQL/MariaDB để nhận config mới.
Thiết lập Cron Job để tự động backup hàng ngày
Thực hiện command crontab -e trên server để thiết lập 1 job tự động backup hàng ngày
# m h dom mon dow command 0 0 * * * /opt/scripts/backup.sh >/dev/null 2>&1
Đoạn script sẽ tự động được chạy bởi Cron Job lúc 00:00 hàng ngày theo múi giờ thiết lập trên server.