使用Crontab以定期的时间间隔来打开一个目录

我想定期打一个目录(比如每天凌晨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发行版中,这是您必须遵循的步骤:

  1. cronttab -e
  2. 在文本编辑器中input:0 4 * * * /home/scripttaringsrc.sh
  3. 退出编辑器,用“:wq”保存文件

创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 

注意:你需要改变这一点,所以你得到你想要的“正确”的文件名。

/约翰