Bash脚本验证备份文件夹是否存在

时间:2011-10-12 09:21:43

标签: linux bash

我正在尝试创建一个可以验证我的备份过程的方法。

每天都会有一个包含备份(快照)/ 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小时检查?

1 个答案:

答案 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'
相关问题