在 Debian 里,“crontab 备份”通常包含两部分:
crontab -l 看到的)/etc/cron* 目录)下面分别说明。
crontab -l > ~/crontab.backup
如果当前没有 crontab,会提示:
no crontab for user
可以忽略。
crontab ~/crontab.backup
每个用户的 crontab 实际保存在:
/var/spool/cron/crontabs/
sudo tar czf cron-users-backup.tar.gz /var/spool/cron/crontabs
sudo tar xzf cron-users-backup.tar.gz -C /
sudo systemctl restart cron
Debian 的系统 cron 文件包括:
/etc/crontab
/etc/cron.d/
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
sudo tar czf etc-cron-backup.tar.gz \
/etc/crontab \
/etc/cron.d \
/etc/cron.hourly \
/etc/cron.daily \
/etc/cron.weekly \
/etc/cron.monthly
可以写一个简单脚本,比如 /usr/local/bin/backup-cron.sh:
#!/bin/bash
DATE=$(date +%F)
sudo tar czf /backup/cron-$DATE.tar.gz \
/var/spool/cron/crontabs \
/etc/crontab \
/etc/cron.d \
/etc/cron.hourly \
/etc/cron.daily \
/etc/cron.weekly \
/etc/cron.monthly
加执行权限并加入 cron:
chmod +x /usr/local/bin/backup-cron.sh
sudo crontab -e
例如每天凌晨备份:
0 3 * * * /usr/local/bin/backup-cron.sh
/var/spool/cron/crontabs 后,必须重启 cron:sudo systemctl restart cron
crontab 命令anacron,还要考虑 /etc/anacrontab如果你是想只备份某个用户或迁移到另一台 Debian 机器,可以告诉我场景,我可以给你更精确的命令。