![通过 cron 作业进行网站备份和“文件在我们读取时发生更改”问题](https://linux22.com/image/1617426/%E9%80%9A%E8%BF%87%20cron%20%E4%BD%9C%E4%B8%9A%E8%BF%9B%E8%A1%8C%E7%BD%91%E7%AB%99%E5%A4%87%E4%BB%BD%E5%92%8C%E2%80%9C%E6%96%87%E4%BB%B6%E5%9C%A8%E6%88%91%E4%BB%AC%E8%AF%BB%E5%8F%96%E6%97%B6%E5%8F%91%E7%94%9F%E6%9B%B4%E6%94%B9%E2%80%9D%E9%97%AE%E9%A2%98.png)
我正在通过 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
更改后的操作。