Tôi biết đó là một cái cũ lớn, nhưng tôi đã sử dụng các câu trả lời ở trên và thêm một hướng dẫn nén tệp. Hy vọng ai đó thấy điều này hữu ích.
1) Nghiên cứu một chút, 7-zip dường như là máy nén tốt nhất hiện có. Nếu bản phân phối linux của bạn hỗ trợ nó, bạn có thể sử dụng trình cài đặt apt:
sudo apt-get install p7zip-full
Ngoài ra, bạn có thể sử dụng tar.gz nếu bạn cảm thấy thoải mái hơn với nó.
2) Sau đó, bạn tạo một tập lệnh, ví dụ /home/users/backup.sh
Với nội dung:
#!/bin/sh
find /home/users/backup_MyDB -type f -mtime +7 -exec rm {} +
mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +%F)_full_myDB.sql
7z a /home/users/backup_MyDB/$(date +%F)_full_myDB.7z /home/users/backup_MyDB/*.sql
rm -f /home/users/backup_MyDB/*.sql
Kịch bản lệnh này sẽ tìm các tệp có hơn 7 ngày và xóa chúng, sau đó nó sẽ tạo ra kết xuất sql, sau đó nó sẽ 7-zip tất cả các tệp .sql trong thư mục, sau đó nó sẽ xóa tất cả .sql trong thư mục ( BTW, bạn có thể tùy chọn thêm một lệnh mysql trước khi kết xuất, như đã lưu ý trong câu trả lời trước nếu bạn cần nó)
3) Chúng tôi làm chmod +x /home/users/backup.sh
như vậy để nó có thể được thực thi.
3.1) Bạn nên kiểm tra tập lệnh của mình nếu nó hoạt động như dự định
4) Chúng tôi lập trình nhiệm vụ với crontab -e
# Minute Hour Day of Month Month Day of Week Command
# (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat)
30 4 * * 1-6 /home/users/backup.sh >> /dev/null 2>&1
Và đó là nó. Nó sẽ sao lưu cơ sở dữ liệu MySQL của bạn mỗi ngày trong tuần vào lúc 4:30 sáng (trừ chủ nhật) và nén sao lưu