我正在尝试创建一个可以验证我的备份过程的方法。
每天都会有一个包含备份(快照)/ mnt / backup / snapshots /的文件夹。每个备份由具有以下名称的文件夹表示:
快照YYYYMMHH-HHMMSS-TOKEN-TTTTTTTTTTTTTTTTTTTTTTTTTTTTT
其中YYYYMMHH-HHMMSS表示启动快照的时间。此外,如果正确拍摄快照,文件夹中将有一个空的“已完成”文件。
示例:
root@SPTestCache000:~# ls -l /mnt/backup/snapshots/
total 8
drwxr-xr-x 17 root root 4096 2011-10-12 09:29 snapshot-20111012-092902-TOKEN-11610563189691354026753564484829291576
drwxr-xr-x 13 root root 4096 2011-10-12 10:08 snapshot-20111012-100827-TOKEN-11610563189691354026753564484829291576
root@SPTestCache000:~# ls -l /mnt/backup/snapshots/snapshot-20111012-092902-TOKEN-11610563189691354026753564484829291576/
drwxr-xr-x 2 root root 4096 2011-10-12 09:29 SomeTest
-rw-r--r-- 1 root root 18 2011-10-12 09:29 completed
我想有一个可以定期运行(cron)的bash脚本,它会检查以下内容: - 是否有一个不超过X小时的快照文件夹。如果存在这样的快照文件夹 - 它是否包含完整的文件? - 否则抛出错误
您是否有任何建议,特别是关于如何进行NOT OLDER而不是X小时检查?
答案 0 :(得分:2)
120 = 2h:
#!/bin/bash
ok=$(
find /mnt/backup/snapshots -maxdepth 1 -type d -name 'snapshot-*' -mmin -120 |
while IFS= read -r; do
[ -f "$REPLY"/completed ] && {
echo ok
break
}
done
)
[ "$ok" == ok ] ||
printf >&2 'no recent backup found\n'