我想定时备份某一个文件,运行crontab -e
,然后输入下面的内容:
51,52,53,54,55,56,57,58,59,1,2,3 * * * * rsync -a /home/peter/running/test.txt /home/peter/timing-backup/data_$(date +%T)
行首的备份时间点写了一长串主要是为了测试一下,看是否可以成功在每分钟都生成一个新的备份文件。
编辑器用的是nano,保存时提示保存文件为/tmp/crontab.730n1B/crontab
结果是,时间从09:50一直到10:01,timing-backup目录里没有生成任何文件。
我检查了一下systemctl status cron
,显示是active(running)的状态。
我是不是哪里写得不对?或者,我应该查哪里?
那个临时目录是默认指定的,如果换 /var/spool/cron/
目录,会提示没有权限;并且,会提示No modification made
,我猜应该是不能指定目录。
管理员手册的相关章节说:
默认情况下,所有用户都可以运行计划任务。每个用户有他们自己的 crontab 其中记录了要调度的命令。可以通过运行 crontab -e
编辑(其内容存储在 /var/spool/cron/crontabs/user
文件中)。
你把命令rsync -a /home/peter/running/test.txt /home/peter/timing-backup/data_$(date +%T)
写成脚本文件,使其可执行后再用执行脚本文件代替命令。保险起见可以加上一行
SHELL=/usr/bin/bash
设置 SHELL 环境变量。
我试了一下,还是没有生成备份文件~
环境变量设置或者不设置,我都测试了一下。
我在想会不会是创建任务的方法有问题~
用crontab -l命令是可以看到任务的。
另外,我直接修改了/etc/crontab
文件,然后sudo systemctl restart cron
,也没有效果; 且这个/etc/crontab是无法被crontab -l检测到的。
我用的是bullseye+gnome。
应该不是,因为文档上都是这样写的。或许应该换一种方法?
新建文件$HOME/script.sh
:
#!/usr/bin/bash
rsync -a /home/peter/running/test.txt /home/peter/timing-backup/data_$(date +%T)
使其可执行:
chmod +x $HOME/script.sh
运行crontab -e
,然后输入:
SHELL=/usr/bin/bash
* * * * * $HOME/script.sh
这种方法对我工作。
1 个赞