我有一台 Windows 服务器机器,每天进行每日备份,每次每日备份占用 1.5GB,因此每天晚上我都想删除超过 1 周的备份文件。
我的备份文件的组织方式如下:
backup.20091118.gz.gpg,如您所见,20091118 部分是标识文件日期为 2009/11/18(年,月,日)的部分。
我打算为此编写一个快速批处理脚本并通过任务管理器安排它,这是一个好主意吗?如果是这样,我将非常感激批处理脚本部分的帮助。
此致
答案1
不用担心文件的年龄,首先删除旧备份,直到只剩下 7 个每日备份,然后在进行每次新备份之前担心删除目录中最旧的文件。
使用批处理脚本删除目录中最旧的文件非常容易:
SET BACKUPDIR=C:\PATH\TO\BACKUPS
FOR /F %%i IN ('DIR /B /O-D %BACKUPDIR%') DO SET OLDEST=%%i
DEL %BACKUPDIR%\%OLDEST%
唯一真正的技巧是DIR /B /O-D
列出按日期排序的纯文件名的命令,最早的在最后。我们使用循环FOR
来捕获OLDEST
变量中的每个文件名,因此当循环完成时%OLDEST%
将扩展为最旧文件的名称。
答案2
在创建最新备份之前删除最旧的文件。
文件删除很快,比备份~1.5GB快得多,并且备份已经安排好了。
答案3
“最快”的方法??一个建议。从下载 GNU find这里
然后只需创建这样的计划任务:
gnu_find.exe c:\path -type f -iname "backup.*gpg" -mtime +7 -delete