使crontab更高效

我运行一个相对简单的服务器与我维护的几个网站。

我设置了一个crontab来转储MySQL并且每天压缩PHP。 旋转了一个星期,我有7增量的任何事情正在进行。 然后我使用相同的crontab将它们从服务器复制到另一个。

使用MySQL位作为例子,我有

16 3 * * tue mysqldump filename > /var/backups/b-Tuesday/filename.sql 16 3 * * wed mysqldump filename > /var/backups/b-Wednesday/filename.sql [etc] 

这重复PHP的压缩了每个站点,并再次为进程的SCP部分。

是否有一种方法可以让每个站点都知道将每个站点保存到相关date的备份文件夹,而不是为每个备份文件夹提供7个作业?

在通话中使用date函数怎么样?

 16 3 * * * mysqldump filename > /var/backups/b-`date +%A`/filename.sql 

试试这样的shell脚本:

 #!/bin/bash /usr/bin/mysqldump filename | /usr/bin/bzip2 -c > /var/backups/b-`date +%A`/filename.sql.bup.bz2 

这与我的/etc/cron.daily/中的内容类似,但对path进行了更改。 我保持意义去做更多,但它的工作原理和备份也很好地压缩!

我的date格式实际上是date +%Y%m%d给我更多的信息,但我保持备份超过7天。

作为替代,logrotate命令将处理每天生成的文件的压缩,重命名(包含date),删除等。 你可以每天调用你的dump命令并每天调用一次logrotate。 logrotateconfiguration文件允许您指定要旋转的文件以及如何处理它们。

对于一个快速和可行的解决scheme,布伦特的使用date的现货。

根据需要以及对未来灵活性的要求,我可能会考虑将备份放入shell脚本中。 这样,你可以使用相同的代码基地,每天,每周,每小时,或其他。 您还可以从错误logging和报告中获得好处(如果这是有价值的)。

切线相关, rsnapshot将为您pipe理小时,每日,每周,每月的备份轮换。 它使用rsync和硬链接的巧妙组合来进行备份。