Đang tải…
Flag
VN Tiếng Việt
EN English
ZH 简体中文
KO 한국어
JA 日本語
Dùng thử VPS

Cron job trên VPS Linux: đặt lịch chạy lệnh và tự động sao lưu cơ sở dữ liệu

Hướng dẫn 2026-11-06 18:31:40 1 lượt xem

Cron job trên VPS Linux cho phép chạy lệnh tự động theo lịch: sao lưu cơ sở dữ liệu mỗi đêm, dọn file tạm, gọi script định kỳ. Bài viết giải thích cú pháp crontab dễ hiểu và hướng dẫn tự động sao lưu MySQL/MariaDB, tự xoá bản cũ để không đầy ổ.

Cú pháp crontab

Mỗi dòng gồm 5 trường thời gian và lệnh cần chạy:

phút  giờ  ngày  tháng  thứ   lệnh
 *     *    *     *      *    /đường/dẫn/lệnh
Ví dụÝ nghĩa
*/5 * * * *Mỗi 5 phút
0 * * * *Đầu mỗi giờ
30 2 * * *2 giờ 30 sáng mỗi ngày
0 3 * * 03 giờ sáng Chủ nhật hằng tuần
0 4 1 * *4 giờ sáng ngày 1 mỗi tháng

Cron chạy theo múi giờ của VPS. Kiểm tra bằng timedatectl, đổi sang giờ Việt Nam bằng timedatectl set-timezone Asia/Ho_Chi_Minh.

Sửa và xem crontab

crontab -e     # sửa lịch của tài khoản hiện tại
crontab -l     # xem lịch hiện có

Lần đầu chạy crontab -e, hệ thống hỏi chọn trình soạn thảo, chọn nano cho dễ dùng.

Tự động sao lưu MySQL / MariaDB

1. Lưu thông tin đăng nhập an toàn

Không ghi mật khẩu thẳng vào lệnh cron. Tạo file chỉ root đọc được:

nano /root/.my.cnf
[client]
user=root
password=MatKhauCSDL
chmod 600 /root/.my.cnf

2. Viết script sao lưu

mkdir -p /root/backup
nano /root/backup-db.sh
#!/bin/bash
DIR=/root/backup
DATE=$(date +%F-%H%M)
for DB in $(mysql -N -e "SHOW DATABASES" | grep -Ev "^(information_schema|performance_schema|mysql|sys)$"); do
    mysqldump --single-transaction --routines "$DB" | gzip > "$DIR/$DB-$DATE.sql.gz"
done
# chỉ giữ bản sao lưu 7 ngày gần nhất
find "$DIR" -name "*.sql.gz" -mtime +7 -delete
chmod 700 /root/backup-db.sh
/root/backup-db.sh && ls -lh /root/backup

--single-transaction giúp sao lưu bảng InnoDB mà không khoá website trong lúc chạy.

3. Đặt lịch chạy mỗi đêm

30 2 * * * /root/backup-db.sh >> /var/log/backup-db.log 2>&1

Ghi log giúp bạn biết lần chạy nào bị lỗi.

4. Khôi phục khi cần

gunzip < /root/backup/tencsdl-2026-11-06-0230.sql.gz | mysql tencsdl

Đừng chỉ để bản sao lưu trên chính VPS

Nếu VPS gặp sự cố hoặc bị xoá, bản sao lưu nằm cùng chỗ cũng mất theo. Hãy chép định kỳ ra nơi khác (máy tính của bạn, một VPS khác, dịch vụ lưu trữ đám mây) bằng rsync hoặc scp. Với Cloud VPS trên SuniHost, máy chủ hỗ trợ còn có tab Sao lưu để bật sao lưu tự động toàn bộ VPS, dùng kèm sao lưu cơ sở dữ liệu ở trên càng an toàn.

Lỗi thường gặp với cron

  • Chạy tay được, cron thì không: cron có biến PATH rất ngắn, hãy dùng đường dẫn đầy đủ (/usr/bin/php, /usr/bin/mysqldump; tra bằng which php).
  • Ký tự % trong lệnh: cron hiểu % là xuống dòng, phải viết \% hoặc đưa lệnh vào script như ví dụ.
  • Không biết cron có chạy không: xem grep CRON /var/log/syslog (Ubuntu, Debian).

Kết luận

Một script ngắn cộng một dòng crontab là bạn có sao lưu cơ sở dữ liệu tự động mỗi đêm. Nếu dùng hosting thay vì VPS, xem bài sao lưu và khôi phục website trên cPanel. Cần máy chủ riêng để chạy script tự do? Tham khảo Cloud VPS.


Bạn thấy bài viết này hữu ích?

Chia sẻ lên Facebook

Liên hệ hỗ trợ

Chọn kênh liên hệ phù hợp với bạn

Đang trực tuyến

Telegram

Nhắn tin nhanh qua Telegram

Zalo

Zalo

Chat trực tiếp qua Zalo