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
Dockhand - Công cụ quản lý Docker giao diện web cho người mới
Dockhand là một công cụ quản lý Docker có giao diện web hiện đại, dễ sử dụng, rất phù hợp cho người mới bắt đầu và các hệ thống homelab.
Hướng dẫn cài đặt và cấu hình OpenVPN trên Ubuntu 22.04
Bài viết hướng dẫn chi tiết từng bước cách cài đặt, cấu hình OpenVPN Server và tạo kết nối từ OpenVPN Client trên Ubuntu 22.04 một cách chuẩn nhất.
Cài Đặt ClamAV Để Bảo Vệ Máy Chủ Khỏi Virus Trên Ubuntu
Hướng dẫn chi tiết cách cài đặt và sử dụng phần mềm diệt virus mã nguồn mở ClamAV trên Ubuntu để quét và bảo vệ máy chủ Linux khỏi mã độc một cách hiệu quả.