Windows自动备份(每天、每月最后一天、每个周日),自动清除备份命令

直接上BAT文件的内容了,完整代码如下。

备份效果:保留最新7天的网站备份、最新4个周末的网站备份,每个月底的备份永久保留。

使用的WinRAR做文件压缩,请自行安装并注意命令中WinRAR的路劲、备份文件夹、存放路劲、3个异地存放路劲,根据应用需要调整

将该BAT文件配置到Windows“任务计划程序”中,频率为每天固定时间运行(比如23点),即可实现自动备份。

下面是关于备份命令的几点简单说明(详细参数或用法请自行查询详细资料了解):

  1. 命令中::代表注释
  2. set后定义的是变量名及值
  3. %%之间加变量名,是取变量的值,%date:~0,4%指的是取系统时间中的前四位即年份数字
  4. WinRAR压缩,排除了带.log的文件
  5. xcopy即复制命令,/d指比较目标和原目录,目标目录为空则复制所有,否则只复制更新过的,/y指禁止提示确认要覆盖已存在的目标文件
  6. FORFILES命令,/P指定Path ,表明要从哪里开始搜索;/M指按照条件搜索文件,默认是*.* ;/C指在每个文件上运行指定的Command 。带有空格的命令字符串必须用引号括起来。默认的Command 是"cmd /c echo @file";/D指选择日期大于或等于(+ )(或者小于或等于(- ))指定日期的文件,不带时间参数则代表与当前日期比较
  7. 代码中判断是否是周日,使用的是“日”这个字,考虑的是中文环境,英文环境请自行修改
  8. 闰年判断已经调整为标准的闰年判断条件(条件1:公历年份是4的倍数,且不是100的倍数;条件2:公历年份是整百数的,必须是400的倍数),%%代表取余
  9. >>用来向文件中写日志
@echo off
::年月日字符串
set str_date=%date:~0,4%%date:~5,2%%date:~8,2%
::星期几
set str_week_val=%date:~-1%
::本地要备份的文件夹路径
set str_webpath_local=D:\wwwroot
::本地备份文件存放路径
set str_path_local=D:\web_bak
::网站压缩包名称前缀
set str_rar_name=MH_WEB
::异地 备份路径
set str_path_day=z:\最新7天网站备份
::异地 备份路径
set str_path_weekend=z:\最新4个周末的网站备份
::异地 备份路径
set str_path_month=z:\每个月底的网站备份

::取两位月份数字
set /a m=%date:~5,2%*1
::第一位为0则只取个位数
if %m:~0,1%==0 set /a m=%m:~1,1%*1
::取四位年份数字(这个命令用不到5位数那年吧)
set /a x=%date:~0,4%
::闰年判断条件1 %%代表取余
set /a y=%x%*1%%4
set /a y2=%x%*1%%100
::闰年判断条件2 %%代表取余
set /a y3=%x%*1%%400
::默认2月份只有28天
set ld=28
::满足闰年条件1
if %y%==0  (
    if %y2% NEQ  0  set ld=29
)
::满足闰年条件2
if %y3%==0  set ld=29
for %%i in (1 3 5 7 8 10 12)do (if %m%==%%i set /a ld=31)
for %%i in (4 6 9 11)do (if %m%==%%i set /a ld=30)
::echo  日期:%ld%
::pause

::当月月底的年月日字符串
set str_monthend_val=%date:~0,4%%date:~5,2%%ld%%

c:
cd C:\Program Files\WinRAR
echo %time%开始压缩 >>%str_path_local%\%str_date%_log.bak

rar a -u -x*.log* %str_path_local%\%str_rar_name%%str_date%.rar %str_webpath_local%

echo %time%结束压缩 >>%str_path_local%\%str_date%_log.bak
echo. >>%str_path_local%\%str_date%_log.bak

echo %time%开始复制 >>%str_path_local%\%str_date%_log.bak

if "%str_date%"=="%str_monthend_val%" (
    xcopy %str_path_local%\%str_rar_name%%str_date%.rar %str_path_month% /d/y
) else (
if "%str_week_val%"=="日" (
    xcopy %str_path_local%\%str_rar_name%%str_date%.rar %str_path_weekend% /d/y
    ::删除4周前的rar文件
    FORFILES /P %str_path_weekend%  /M *.rar /D -22 /C "cmd /c echo %time% [email protected] &del @file">>%str_path_local%\%str_date%_del.bak

) else (
    xcopy %str_path_local%\%str_rar_name%%str_date%.rar %str_path_day% /d/y
    ::删除7天前的rar文件
    FORFILES /P %str_path_day%  /M *.rar /D -7 /C "cmd /c echo %time% [email protected] &del @file">>%str_path_local%\%str_date%_del.bak
)
)

echo %time%结束复制 >>%str_path_local%\%str_date%_log.bak
echo. >>%str_path_local%\%str_date%_log.bak

::删除本地1天前的rar文件
FORFILES /P %str_path_local%  /M *.rar /D -1 /C "cmd /c echo %time% [email protected] &del @file">>%str_path_local%\%str_date%_del.bak
::删除本地7天前的bak记录文件
FORFILES /P %str_path_local%  /M *.bak /D -7 /C "cmd /c echo %time% [email protected] &del @file">>%str_path_local%\%str_date%_del.bak

本文首发于我的CSDN博客:https://blog.csdn.net/n_ithero/article/details/104037999

原文地址:https://www.cnblogs.com/xuezhizhang/p/12228487.html

时间: 2024-10-24 17:24:39

Windows自动备份(每天、每月最后一天、每个周日),自动清除备份命令的相关文章

利用tar进行完全备份、增量备份、差异备份,并控制版本号,自动删除备份文件

因业务需求,需对一个目录进行定期备份,现在使用tar进行自动备份,计划每周一次完整备份,其他每天进行增量或者差异备份,所以写出下面的脚步通过指定参数来选择备份模式.备份文件只保留最近两个完整备份版本和附属的增量或差异备份版本. [[email protected] script]# ./backup.sh          Please select the backup or delete mode,[full|diff|incr|delete|help] [[email protected]

mysql完整备份,超过十天的自动删除

#!/bin/bash #Author [email protected] cd /sqlbak /usr/local/mysql/bin/mysqladmin -uroot -p123456 flush-logs MAXIMUM_BACKUP_FILES=10 BACKUP_FOLDERNAME="database_backup" DB_HOSTNAME="localhost" DB_USERNAME="root" DB_PASSWORD=&q

备份校验两不误,MySQL自动备份还原校验设计详解

作者介绍庞阔,优朋普乐传媒运维基础部经理.负责数据库运营管理及平台设计开发,监控设计改进,问题跟踪处理,机房网络维护管理,目前四个专利已在专利局申请中.擅长数据库运维管理及Shell.Perl.PHP编写. 最近关于数据库故障出现的问题较多,不论大小公司对数据的备份要求都很高,但对校验数据备份的有效性要求更为迫切,很多公司对于自动备份和还原都已经形成体系,但对于还原后的备份有效性校验可能都不太完善,而且目前网上也没有较为完善的检验机制(可能我没找到). 对数据库备份的有效性校验的方法或样例选择,

递归【输入一个日期】返回【前12个月每月最后一天】

/// <summary> /// 递归[输入一个日期]返回[前12个月每月最后一天] /// </summary> /// <param name="date">输入日期</param> /// <param name="i">循环次数(0-11)</param> /// <returns></returns> ArrayList arr = new ArrayList

用批处理文件自动备份文件及文件夹,并自动删除n天前的文件

---恢复内容开始--- 下是备份的批处理,添加到"计划任务"中,设定时间自动运行 复制代码 代码如下:@echo off rem 格式化日期 rem date出来的日期是"2006-02-22 星期三",不能直接拿来使用,所以应该先格式化一下 rem 变成我们想要的.date:~0,4的意思是从0开始截取4个字符 set d=%date:~0,4%%date:~5,2%%date:~8,2% rem 设定压缩程序路径,这里用的是WINRAR的rar.exe进行打包

mysql二进制日志详解及备份恢复、基于mysqldump及lvmsnapshot做备份恢复详解

二进制日志: 时间点恢复 复制 20140411 回顾: 日志文件:6类 一般查询日志:log, general_log, log_output 慢查询日志: 错误日志 二进制日志 中继日志 事务日志 二进制日志:"修改" position:位置 time: 时间 滚动: 1.大小 2.时间 二进制日志的功用: 即时点恢复: 复制: mysql> SHOW MASTER STATUS; mysql> FLUSH LOGS; mysql> SHOW BINARY LOG

教你树莓派4B的系统备份方法教程大全(全卡+压缩备份)

引用:https://www.hao4k.cn/thread-41764-1-1.html 在 Windows 上用 VMware 安装 Linux 虚拟机有个「快照」的功能,就是把你当前的系统做个备份,一旦后来误操作把系统搞挂了之后可以恢复到备份的那个时间节点.Linux 系统开放的权限比较高,以 root 权限操作的话很有可能就会误删一些系统文件导致系统崩溃.我就曾把树莓派的系统搞挂过好几次,每次只能重新刷入镜像,开机后还得重复一大堆操作,所以备份树莓派的系统就很重要了.还可以把已经部署好的

Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)

原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份 同样需要加表锁).XtraBackup支持所有的Percona Server.MySQL.MariaDB和Drizzle. XtraBackup优势 : 1.无需停止数据库进行InnoDB热备 2.增量备份MySQL 3.流

自动重启、定时开关机、自动登录系统...

第一种方法:电脑自动开机.且音乐随你定 .自动定时开机此功能需要在BIOS中设定,并且你的主板的高级电源管理设置必须支持这个功能,不过现在大多数的主板全支持,放心使用吧.步骤一:启动系统按DEL,进入BIOS,然后选中 "POWER MANAGEMENT FEATURES"(电源管理设置),回车进入.在电源窗口中找到"RESTORE ON AC/POWERLOSS"项,按回车,然后通过方向键设置其值为"POWER ON".步骤二:选中"