我想定期打一个目录(比如每天凌晨4点),所以我打算使用crontab。 我怎么能date在文件名,即srcdirectorybackup5-30-09.tar,以便我可以区分所有的tar文件。
你需要ISO格式的date – YYYY-MM-DD。 他们这样正确sorting。
tar -cf srcdirectorybackup`date +%F`.tar /path/to/src
假设焦油和date在path中。 您可以将此行添加到crontab。
Cripes! ericslaw是绝对正确的。 如果在crontab文件中使用这些%,则需要将其转义,否则将被解释为新行!
所以,如果你打算把这一行放到crontab中,用“\”来转义“%”。
tar -cf srcdirectorybackup`date +\%F`.tar /path/to/src
代表真的应该去ericslaw …
ACK!
有几个人提出了精彩的date+%Y%m%d%H%M%S解决scheme,但是没有人提到crontabs中'%'的主要注意事项…
'%'相当于'\ n',所以你的cronjob可能会失败并且失败!
你更可能希望简单地用这样的反斜杠来转义它(我也想得到某种库存或其他输出来检查它是否运行)。
0 4 * * * tar vcf /path/to/dsttarfile.tar.`date +\%Y\%m\%d_\%H\%M\%S` /path/to/srcdir > /path/to/logfile.log 2>&1
你可能会考虑使用`date +%w'作为你tarfile的一部分,所以你最近7天都有一个tar文件,不必担心清除旧的拷贝。
假设你可以处理crontab的东西,对于bash,命令如下:
bash -c "tar -cf `date +%F`test.tar foo bar"
当然,foo和bar是文件,test.tar是文件所需的后缀的其余部分,并且你需要任何选项:)
这适用于cygwin和linux。 我不太熟悉cron知道是否告诉它要使用哪个shell是必要的。
在许多Linux发行版中,这是您必须遵循的步骤:
创build文件/home/scripttaringsrc.sh
tar -cf srcdir 'date +%Y-%m-%d_%Hh%Mm'.tar /path/to/dst
不要忘记chmod scripttaringsrc.sh来执行权限。
我有这个小脚本打包我的整个等目录,并将其保存在具有正确date的目录。
保存这个脚本并把它放到/etc/cron.daily/(如果你的dist里面有这个脚本的话),因为那个脚本里面的脚本每4个执行一次,最多的时候是4个。但是, etc / crontab会显示确切的细节。
#!/bin/sh date=`date +%Y%m%d-%H%M` #echo Tid: $date bpath=/var/backup/computername cd $bpath/ mkdir sys$date cd sys$date datumfil=$bpath/sys$date/$date > $datumfil tar -cvzf etc.tar.gz /etc/ > etc.tar.gz.list md5sum * > md5sum ls -lh >> md5sum
注意:你需要改变这一点,所以你得到你想要的“正确”的文件名。
/约翰