我想做一个cron作业,创build我的web目录的焦油。
我有这个工作
* * * * * tar -zcvfp /disk1/archives/websites/`date +%Y-%m-%d_%I-%M-%S-%p`/`date +%Y-%m-%d_%I:%M:%S:%p`.tar.gz /web
这个工作应该(但不)创build一个tar文件到我的/ disk1目录。 所以我难住了那一个。
还有一件事是我想到的,是否有可能把所有的备份tar文件都转储到date +%Y-%m-%d并且将同一天创build的所有文件放在那里?
所以输出看起来像
/disk1/archives/websites/2012-02-05/2012-02-05_5:25:04.tar.gz
为了testing目的,我每分钟都会做这个工作。
我的语法有什么问题吗?
cron不知道tar或date是什么,因为它没有环境variables。 用完整的path来回应二进制文件。
如果你不知道完整的path,可以用which来获取它。
例如:
[bart@dev ~]$ which tar /bin/tar [bart@dev ~]$ which date /bin/date
这将使你的cron线这个:
/bin/tar -zcvfp /disk1/archives/websites/`/bin/date +%Y-%m-%d_%I-%M-%S`/`/bin/date +%Y-%m-%d_%I:%M:%S`.tar.gz /web
把你的tar放在一个shell脚本中,比如/usr/local/bin/backup.sh 。 然后从cron调用该脚本。
* * * * * /usr/local/bin/backup.sh
诀窍是,cron不是一个shell,所以在shell扩展中工作的东西可能无法在crontabs中工作。 debugging将命令放入脚本中,然后调用该脚本(通过完整path)会更安全,更容易。