Cronjob của tôi trông như thế này:
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.dump
Làm cách nào tôi có thể tạo tên tệp duy nhất cho mỗi lần khi cronjob viết mysql_daily.dump?
Cronjob của tôi trông như thế này:
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.dump
Làm cách nào tôi có thể tạo tên tệp duy nhất cho mỗi lần khi cronjob viết mysql_daily.dump?
Câu trả lời:
Đối với bash, có thể:
... > /srv/backup/mysql_daily-$(date -u +\%Y\%m\%dT\%H\%M\%S)Z.${RANDOM}.dump
Cá nhân, tôi thường chỉ đặt các lệnh đơn giản trong của tôi crontab
. Tôi sẽ đặt nó trong một tập lệnh nhỏ và sử dụng tập lệnh trong crontab
. Điều này sẽ có lợi ích của việc không yêu cầu các %
nhân vật được trốn thoát (một cạm bẫy crontab phổ biến).
cập nhật làm cho nó ISO 8601 mỗi bình luận @johan
cron
Thực tiễn chung cho việc này là sử dụng dấu thời gian bằng cách sử dụng date +%s
để tạo ra thứ gì đó hữu ích để đánh dấu tệp (Tôi đã sử dụng giây làm ví dụ nhưng bạn có thể sử dụng bất kỳ định dạng ngày nào). Thật sự không cần thiết phải có một tên tệp thực sự độc đáo miễn là tên tệp không xung đột.
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily_`date +\%s`.dump
Thử
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.$(/bin/date +\%Y\%m\%d).dump
sẽ đặt ngày hiện tại ở định dạng YYYYMMDD vào tên tệp.