根据日期检测丢失的文件

时间:2017-03-30 07:53:34

标签: windows date batch-file server

我需要手动监控基于Windows的随机备份程序的故障,唯一的方法是检查它所做的每日备份文件。

批处理文件对我来说最简单。它需要扫描目录以查找某种文件类型,然后如果昨天创建/修改的文件不存在则执行X.

C:\backups\random-named-file.tib 27/03/2017
C:\backups\random-named-file.tib 28/03/2017
C:\backups\random-named-file.tib 29/03/2017

因此,如果昨天没有创建或修改random-named-file.tib,则意味着备份失败,我会将输出写入控制台,说“备份失败”

有没有人有任何想法?

编辑: 为了澄清,备份文件来自自定义应用程序,无法检查错过的备份。我正在寻找的批处理文件解决方案将集成到我们的RMM平台中,该平台将获取批处理文件的结果并为我们的服务台提供支持服务台票据。

备份应用程序将应用自己的保留策略并删除超过4天的所有备份。 我只想检测前一天是否错过了备份。文件名是可变的,唯一的常量是文件扩展名(* .tib)

此备份应用程序不会编写事件日志,也不会创建自己的日志文件,我可以解析失败消息。

2 个答案:

答案 0 :(得分:0)

1)我建议你,阅读这篇文章

four-ways-to-manage-windows-server-2008-backup-on-multiple-servers

2)有一个 Windows调度程序,可以根据您的情况采取行动

Window scheduler Wiki

3)您可以编写脚本,以便在失败时提醒您

4)我找到了解决类似问题的解决方案

make-windows-task-scheduler-alert-on-fail

TL:Dr - >见第4步

答案 1 :(得分:0)

我做了你要做的事情。简而言之,由于它的Windows备份程序应该有一种方法可以在备份失败时自动发出警报。

请注意此示例:我在特定的文件夹结构中执行此操作。如果要更改批处理文件的位置,则需要使用适当的路径更新批处理文件中的第二行代码。在这个例子中,路径是相对的,但它很容易改变,所以我把它留给你。

这是我的文件夹结构:

\---batch                          # Folder with batch file
        backups.txt                       # check_backups.bat creates this file
        check_backups.bat                 # Batch file that does the job
|   filename1.tib
|   filename2.tib
|   filename3.tib
|   filename5.tib

以下是批处理文件的代码(check_backups.bat):

@echo off
dir ..\* /a-d /b > "%~dp0\backups.txt"
set count=1
setlocal EnableDelayedExpansion
FOR /F "delims=*" %%A IN (backups.txt) DO (
    SET fl=%%~nA
    IF !fl:~8! NEQ !count! (
        echo Backup Failed: Missing file is 'filename!count!.tib'
        goto failed
    )
    SET /A count=!count!+1
)

echo All is good

:failed

pause

如果缺少filename9.tib,您将收到一条消息:"备份失败:缺少文件是filename9.tib"。

如果每次都很好,你会收到一条消息:"一切都很好"。