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. Sử dụng các câu lệnh quen thuộc tar, find và rsync.
1. Lập lịch daily backup
Đố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 tar sẽ tạo file lưu trữ và nén thư mục /var/www/html trong thư mục /home/kien/backup/daily/data.
- Lệnh find sẽ xóa tất cả các bản sao lưu hàng ngày cũ hơn 7 ngày.
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 một cách tự động bằng cách làm như sau:
crontab -e
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
Tương tự như daily backup chúng ta cũng làm một kịch bản tương tự cho weekly backup
- Lệnh tar sẽ tạo file lưu trữ và nén thư mục /var/www/html trong thư mục /home/kien/backup/weekly/data.
- Lệnh find sẽ xóa tất cả các bản sao lưu hàng ngày cũ hơn 31 ngày.
tar -zcf /home/kien/backup/weekly/data-$(date +%Y%m%d).tar.gz -C /var/www/ html
find /home/kien/backup/weekly/* -mtime +7 -delete
Và một cronjob để sao lưu hàng tuần một cách tự động bằng cách làm như sau:
crontab -e
18 0 * * * sh /home/kien/backup/backup-weekly.sh
3. Lập lịch monthly backup
Tương tự như daily backup và weekly backup chúng ta cũng làm một kịch bản tương tự cho monthly backup
- Lệnh tar sẽ tạo file lưu trữ và nén thư mục /var/www/html trong thư mục /home/kien/backup/monthly/data.
- Lệnh find sẽ xóa tất cả các bản sao lưu hàng ngày cũ hơn 365 ngày.
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à một cronjob để sao lưu hàng tháng một cách tự động bằng cách làm như sau:
crontab -e
18 0 * * * sh /home/kien/backup/backup-monthly.sh
4. Lập lịch sao lưu khác
Để an toàn anh em nên backup sao lưu đưa sang server khác tránh trường hợp bị server có sự cố hay gặp vấn đề. Lúc này chúng ta dùng lệnh rsync.
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/
Và tạo một cron backup auto
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/
5. Tổng kết
Trên đây là tổng hợp một số câu lệnh dành cho việc lập lịch backup Daily Weekly và Monthly dùng lệnh tar rsync và cron. Để dữ liệu luôn được đảm bảo anh em nên lựa chọn một lập lịch backup.
Chúc anh em thành công!