Top

Script tự động backup Source Code & Database trên Server

Source code và database là 2 thứ cực kỳ quan trọng của 1 website. Vì vậy cần có 1 giải pháp tự động backup hàng ngày là cần thiết để đảm bảo nếu có sự cố xảy ra thì chúng ta hoàn toàn có thể khôi phục lại.

Script tự động backup

Đoạn script sau đây (sử dụng Shell Script) sẽ thực hiện công việc tự động backup Source Code và Database (MySQL/MariaDB) hàng ngày trên Linux Server sử dụng Cron Job.

Tạo 1 script backup có đường dẫn: /opt/scripts/backup.sh

#! /bin/sh
# get today in format Ymd
TODAY=$(date +"%Y%m%d")
DB_NAME=<database_name>
DB_USER=<database_user>
SITE='website'
# command for backup
cd /opt/backup
mysqldump -u ${DB_USER} --single-transaction --quick --lock-tables=false ${DB_NAME} | gzip  > ${DB_NAME}-${TODAY}.sql.gz
zip -r ${SITE}-${TODAY}.zip /opt/www/website/ > /dev/null 2>&1

Với:

  • /opt/backup là thư mục lưu trữ các bản backup
  • /opt/www/website 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.

Nguồn: vinasupport.com

Bình Luận

avatar
  
smilegrinwinkmrgreenneutraltwistedarrowshockunamusedcooleviloopsrazzrollcryeeklolmadsadexclamationquestionideahmmbegwhewchucklesillyenvyshutmouth