![如何验证我的 Bash 脚本中服务器上的时间是否设置正确?](https://linux22.com/image/783260/%E5%A6%82%E4%BD%95%E9%AA%8C%E8%AF%81%E6%88%91%E7%9A%84%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E6%97%B6%E9%97%B4%E6%98%AF%E5%90%A6%E8%AE%BE%E7%BD%AE%E6%AD%A3%E7%A1%AE%EF%BC%9F.png)
我正在为非常重要的服务器编写终极备份脚本。我的脚本已经:
- 创建备份
- 验证复制的文件
- 验证 gz 档案
- 通过 scp 将文件发送到远程服务器后,比较本地和远程的 MD5
- 删除超过 365 天的每月备份、超过 31 天的每周备份、超过 7 天的每日备份、超过 24 小时的每小时备份
- 检查本地和远程机器上的可用磁盘空间
- 如果发生错误则发送电子邮件报告
- 发送每周备份的电子邮件报告
除此之外,我还错过了一件重要的事情——本地和远程的时钟验证,因为它会影响副本的命名和删除。
如何以简单可靠的方式确保 bash 中的日期和时间设置正确?
如果可能的话 - 如果该方法可以在带有 cygwin 的 Windows 服务器上运行就太好了。
我并不是在寻求完整的解决方案,只是建议采取正确而不是复杂的方法。
答案1
您可以在Linux中使用命令:
date +%s
在 Windows (PowerShell) 中
Get-Date -UFormat %s
要得到纪元时间. 这些数字很容易比较。
PS 对于 Windows,您可能需要将数字剥离为整数,如下所示:
$t3 = (Get-Date -UFormat %s).split(',')[0]
echo $t3
注意:此处逗号,
是我的十进制数分隔符。根据你的语言,你可能需要更改它。
此命令将为您提供来自外部源的纪元时间(以便与您的机器进行比较)
curl -s "http://worldtimeapi.org/api/timezone/Europe/Rome" |jq '.unixtime'
请随意更改您的时区