我运行一个相对简单的服务器,其中包含我维护的几个网站。
我设置了一个 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 部分,重复此操作。
有没有办法为每个知道将其保存到相关日期的备份文件夹的站点进行日常工作,而不是为我要备份的每件事提供 7 个工作?
在通话中使用日期函数怎么样?
试试这样的 shell 脚本:
这类似于我的 /etc/cron.daily/ 中的内容,但您的路径有所更改。我一直想用它做更多的事情,但它可以工作,而且备份也被很好地压缩了!
我的日期格式实际上是
date +%Y%m%d
为了给我更多信息,但我将备份保存超过 7 天。作为替代方案,logrotate 命令将处理每天生成的文件的压缩、重命名(带日期)、删除等。您可以每天调用转储命令,也可以每天调用一次 logrotate。logrotate 配置文件允许您指定要旋转的文件以及如何处理它们。
对于一个快速可行的解决方案,布伦特使用日期。
根据需要和对未来灵活性的渴望,我可能会考虑将备份放入 shell 脚本中。这样,您可以每天、每周、每小时或其他任何方式使用相同的代码库。您还可以获得错误记录和报告的好处(如果这是有价值的)。
相切相关,rsnapshot将为您管理每小时、每天、每周、每月的备份轮换。它使用 rsync 和硬链接的巧妙组合来进行备份。