Backup Daily Weekly Monthly với tar rsync và cron

Bài viết này mình chia sẻ mọi người cách tạo các bản sao lưu hàng ngày, hàng tuầnhàng tháng trên Ubuntu/Debian một cách tự động. Ở đây mình sử dụng các lệnh tar, find, rsynccron để tự động hóa lịch sao lưu.

Daily Backup

Lệnh TAR sẽ tạo một kho lưu trữ nén của thư mục /var/www/html trong /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/backup-$(date +%Y%m%d).tar.gz -C /var/www/ html
find /home/tony/backup/daily/* -mtime +7 -delete

Weekly Backup

Lệnh TAR sẽ tạo một kho lưu trữ nén của thư mục /var/www/html trong /home/kien/backup/weekly. Lệnh find sẽ xóa tất cả các bản sao lưu hàng tuần cũ hơn 31 ngày hoặc 1 tháng.

tar -zcf /home/kien/backup/weekly/backup-$(date +%Y%m%d).tar.gz -C /var/www/ html
find /home/kien/backup/weekly/* -mtime +31 -delete

Monthly Backup

Lệnh TAR sẽ tạo một kho lưu trữ nén của thư mục /var/www/html trong /home/kien/backup/monthly. Lệnh find sẽ xóa tất cả các bản sao lưu hàng tháng cũ hơn 365 ngày hoặc 1 năm.

tar -zcf /home/kien/backup/monthly/backup-$(date +%Y%m%d).tar.gz -C /var/www/ html
find /home/kien/backup/monthly/* -mtime +365 -delete

Automate with Cron

Bạn có thể tạo một cronjob để sao lưu hàng ngày, hàng tuần và hàng tháng. Mở lệnh crontab -e và thêm như sau:

15 0 * * * sh /home/tony/backup-daily.sh
30 0 * * 1 sh /home/tony/backup-weekly.sh
45 0 1 * * sh /home/tony/backup-monthly.sh

Thực hiện tập lệnh sao lưu hàng ngày hàng ngày vào lúc 12:15 AM

Thực hiện tập lệnh sao lưu hàng tuần vào mỗi thứ Hai lúc 12:30 sáng
Thực hiện tập lệnh sao lưu hàng tháng

Backup Externally

Tiếp theo, bạn backup sao lưu vào nơi lưu trữ server khác tránh trường hợp bị server có sự cố

rsync -a --delete /home/kien/backup/ [email protected]:/path/to/remote/backups/

Tạo một cron backup auto

0 2 * * * rsync -a --delete /home/kien/backup/ [email protected]:/path/to/remote/backups/

Bài viết liên quan

Leave a Reply

Your email address will not be published. Required fields are marked *