Lập lịch backup Daily, Weekly, Monthly bằng Tar, Rsync và Cron trên Linux
Hướng dẫn cách tự động hóa quá trình sao lưu dữ liệu hàng ngày, hàng tuần và hàng tháng trên Linux sử dụng công cụ tar, find, rsync và crontab.
Trong bài viết này mình chia sẻ với anh em cách tạo các bản sao lưu hàng ngày, hàng tuần và hàng tháng trên Linux một cách tự động. Bằng cách sử dụng các công cụ dòng lệnh cực kỳ quen thuộc và mạnh mẽ: tar, find và rsync.
1. Lập lịch Daily Backup (Sao lưu hàng ngày)
Đối với daily backup thì mình có thể làm đơn giản dùng lệnh tar và find như sau:
- Lệnh
tarsẽ tạo file lưu trữ và nén thư mục/var/www/htmlvào trong thư mục/home/kien/backup/daily/data. - Lệnh
findsẽ tìm và tự động xóa tất cả các bản sao lưu hàng ngày đã cũ hơn 7 ngày để tiết kiệm dung lượng.
Tạo một file bash script ví dụ backup-daily.sh và thêm vào nội dung sau:
#!/bin/bash
tar -zcf /home/kien/backup/daily/data-$(date +%Y%m%d).tar.gz -C /var/www/ html
find /home/kien/backup/daily/* -mtime +7 -delete
Anh em có thể tạo một cronjob để sao lưu hàng ngày tự động bằng cách gõ:
crontab -e
Sau đó thêm dòng lập lịch sau (chạy vào 00:15 mỗi ngày):
15 0 * * * sh /home/kien/backup/backup-daily.sh
Trong đó file backup-daily.sh là nội dung của 2 câu lệnh bên trên anh em thêm vào.
2. Lập lịch Weekly Backup (Sao lưu hàng tuần)
Tương tự như daily backup, chúng ta cũng làm một kịch bản cho weekly backup:
- Lệnh
tarnén và lưu vào thư mục/home/kien/backup/weekly/data. - Lệnh
findxóa tất cả các bản sao lưu hàng tuần cũ hơn 31 ngày.
Tạo script backup-weekly.sh:
#!/bin/bash
tar -zcf /home/kien/backup/weekly/data-$(date +%Y%m%d).tar.gz -C /var/www/ html
find /home/kien/backup/weekly/* -mtime +31 -delete
Và thêm một cronjob để tự động sao lưu hàng tuần (chạy vào 00:18 mỗi tuần):
crontab -e
18 0 * * * sh /home/kien/backup/backup-weekly.sh
3. Lập lịch Monthly Backup (Sao lưu hàng tháng)
Kịch bản cho monthly backup cũng áp dụng tư duy tương tự:
- Lệnh
tarnén và lưu vào thư mục/home/kien/backup/monthly/data. - Lệnh
findxóa các bản sao lưu đã cũ hơn 365 ngày (1 năm).
Tạo script backup-monthly.sh:
#!/bin/bash
tar -zcf /home/kien/backup/monthly/data-$(date +%Y%m%d).tar.gz -C /var/www/ html
find /home/kien/backup/monthly/* -mtime +365 -delete
Và thêm cronjob để tự động chạy hàng tháng:
crontab -e
18 0 * * * sh /home/kien/backup/backup-monthly.sh
4. Chuyển bản sao lưu sang Server khác (Offsite Backup)
Để an toàn tuyệt đối, anh em nên đẩy bản backup sang một server khác, tránh trường hợp server chính gặp sự cố vật lý hoặc lỗi phần cứng dẫn đến mất toàn bộ dữ liệu. Lúc này chúng ta sẽ dùng lệnh rsync kết hợp với SSH:
rsync -a --delete /home/kien/backup/daily user@hostname:/path/to/remote/backups/
rsync -a --delete /home/kien/backup/weekly user@hostname:/path/to/remote/backups/
rsync -a --delete /home/kien/backup/monthly user@hostname:/path/to/remote/backups/
Bạn có thể tạo luôn một Cronjob để tự động rsync dữ liệu sang server Remote vào lúc 02:00 sáng mỗi ngày:
0 2 * * * rsync -a --delete /home/kien/backup/daily user@hostname:/path/to/remote/backups/
0 2 * * * rsync -a --delete /home/kien/backup/weekly user@hostname:/path/to/remote/backups/
0 2 * * * rsync -a --delete /home/kien/backup/monthly user@hostname:/path/to/remote/backups/
(Lưu ý: Để rsync chạy ngầm bằng crontab mà không bị hỏi mật khẩu, anh em nhớ cấu hình SSH Key-based authentication giữa 2 server nhé!)
5. Tổng kết
Trên đây là tổng hợp một số lệnh bash script căn bản dành cho việc lập lịch backup theo chu kỳ: Daily (Ngày) - Weekly (Tuần) - Monthly (Tháng) bằng cách dùng lệnh tar, rsync và cron.
Để dữ liệu của doanh nghiệp luôn được đảm bảo an toàn cao nhất, anh em nên xây dựng một quy trình sao lưu bài bản và luôn có ít nhất một bản Offsite Backup ở khác Data Center. Chúc anh em thực hành thành công!
Bình luận
Bài viết liên quan
Hướng dẫn cài đặt Postfix làm SMTP Server trên Ubuntu 22.04
Bài viết hướng dẫn chi tiết cách cài đặt và cấu hình Postfix làm SMTP Server trên Ubuntu 22.04, bao gồm các cấu hình cơ bản, bảo mật SASL và chống Spam.
Hướng dẫn mở rộng phân vùng LVM trên server Linux Ubuntu
Bài viết hướng dẫn chi tiết các bước mở rộng phân vùng LVM trên server Linux Ubuntu khi ổ cứng vật lý vẫn còn dung lượng trống.
So Sánh Caddy, Nginx và Apache: Đâu Là Lựa Chọn Tốt Nhất Cho Web Server?
Phân tích và so sánh chi tiết ưu, nhược điểm của Caddy, Nginx và Apache. Giúp bạn dễ dàng lựa chọn web server phù hợp nhất cho dự án của mình.