通过 cron 作业进行网站备份和“文件在我们读取时发生更改”问题

通过 cron 作业进行网站备份和“文件在我们读取时发生更改”问题

我正在通过 cron 作业创建网站(即其“public_html”文件夹)的计划备份,第一个操作是将该文件夹压缩为 tar.gz 备份(“public_html_date.tar.gz”)。

有时我会收到邮件错误:

tar: /home/.../...: file changed as we read it

我的问题是: - 这个错误是否会阻止受影响的文件存档到 tar 中?(即跳过?) - 这个错误是否会停止 cron 进程?(即所有后续文件都不会存档到 tar 中?)

最后:这个备份有多可靠,有没有办法使它更可靠(没有这些错误)以及我可以使用哪些其他更可靠的策略?

谢谢。

答案1

此错误是否会阻止受影响的文件存档到 tar 中?(即跳过?)

检查是在文件归档后进行的。因此它被归档了——但你不确定它是否充分已存档;存档可能包含一半旧版本和一半新版本。

这个错误会停止 cron 进程吗?(即所有后续文件都不会存档到 tar 中?)

不会,它会继续存档下一个文件。虽然 tar 进程最后报告失败,但它无论如何都会创建完整的存档。

(我的意思是你总是可以在您的备份中使用tar -tf,事实上您可能应该查看其中一个失败的备份才能 100% 确定。)

有没有办法让它更可靠(没有这些错误)

public_html 中的重要文件通常不会发生很大变化。我猜这些警告最常见的原因是缓存CMS 使用的目录,这些目录没有必要存储,您可以从备份中排除完全地。

除此之外,如果您的服务器设置为使用 LVM,或者文件系统提供自己的快照系统(例如 ZFS),则可以使用存储快照。然后,流程变为“创建快照 – 制作快照的 tarball – 销毁快照”。

我可以使用哪些其他更可靠的策略?

不要将 Web 服务器用作主要存储位置。将网站代码(CMS 或其他)存储在 Git 或 Hg 存储库中(不必在 GitHub 上!),并制定一些部署流程网络服务器。它可以从一些简单的事情开始,比如自动执行git pull --ff-only更改后的操作。

相关内容