当前位置: 首页 > news >正文

rsync 客户端实现自动备份 Windows端powershell脚本及bat批处理文件程序

文章目录

  • PowerShell脚本
  • bat批处理程序脚本

PowerShell脚本

简介:
由于我这里需要使用软件才能够链接到服务器,所以加了处理
如果可以直连,注释测试网络链接函数中的restartVPN即可

文件名:startbackup.ps1

# 定义变量
$ip = "192.168.10.204"
$port = 873
$processName = "c44e38b067efcf9b7f5d02dcb3d4caae" #VPN进程名,用于结束程序
$exePath = "C:\Users\Administrator\AppData\Local\c44e38b067efcf9b7f5d02dcb3d4caae\$processName.exe" # VPN程序位置,用于启动
$date = Get-Date -Format "yyyy-MM-dd" # 格式化时间,用于重命名同步日志文件
$scriptLogFile = "script_log.txt" # 脚本日志
$rsyncLogFile = "$date-rsync_log.txt" # 同步程序日志
$startSearchString = "receiving incremental file list" # 开始备份标志
$endSearchString = "total size is" # 备份成功标志
# $scriptPath = "D:\backup\backup-script" # bat批处理程序# 清除旧日志(如果需要)
#if (Test-Path $logFile) {
#    Remove-Item $logFile
#}# 重启VPN程序
function restartVPN{
try {# 获取VPN状态statusVPN# 判断重启VPN or 启动VPNif($processStatus -ne $null){# 停止VPNStop-Process -Name $processName -Force -ErrorAction StopStart-Sleep -Seconds 3Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): VPN程序已停止"# 启动VPNStart-Process -FilePath $exePathStart-Sleep -Seconds 3statusVPN# 判断是否重启成功if($processStatus -ne $null){Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): VPN程序已启动"}else {restartVPN}}else {Start-Process -FilePath $exePathStart-Sleep -Seconds 3Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): VPN程序已启动"}} catch {Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): 程序启动失败 ${exePath}: $_"}
}
# 启动VPN程序
function statusVPN {# VPN程序获取进程状态$processStatus = Get-Process | Where-Object { $_.Name -like "*$processName*" }
}# 启动备份
function startBackup {Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): 开始备份"rsync -avz --delete --progress --password-file=/cygdrive/d/sync/bin/rsyncd.password root@10.6.10.24::test /cygdrive/d/backup/backup >$rsyncLogFile# 开始备份结果$searchStartResult = Select-String -Path $rsyncLogFile -Pattern $startSearchString -Quiet# 结束备份结果$searchEndResult = Select-String -Path $rsyncLogFile -Pattern $endSearchString -Quiet# 判断是否备份成功if ($searchStartResult) {Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): 正在备份,请等待..."} else {Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): 未开始备份,重启备份程序...."startBackup}# 循环判断是否备份成功for ($i = 1; $i -le 5; $i++) {if ($searchEndResult) {Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): 备份成功"break;}else{Start-Sleep -Seconds 60}}
}# 测试网络链接,并将结果存储到networkResult中
function TestNetConnection {$networkResult = Test-NetConnection -ComputerName $ip -Port $port -InformationLevel Quietif ($networkResult) {Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): 网络链接成功"         } else {Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): 网络链接失败,重启VPN"restartVPNTestNetConnection}
}# 主程序Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): 脚本开始执行"# 检查网络TestNetConnection# 开始备份startBackup
# 脚本结束
Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): 脚本执行完毕"
Add-Content -Path $scriptLogFile -Value "$(Get-Date -Format G): -----------------------------------------------------------------------------"

bat批处理程序脚本

文件名:start-backup-manual.bat
注意:若出现乱码,则需要另存为,并将编码设置为ANSI

@echo off
echo 开始执行 %DATE% %TIME% >> rsync_log.txt
set "rsync_command=rsync -avz --delete --progress --password-file=/cygdrive/d/sync/bin/rsyncd.password root@192.168.10.204::test /cygdrive/d/backup/backup"
:: 执行rsync命令并将输出追加到带有时间戳的日志文件中
%rsync_command% >> rsync_log.txt 2>&1
echo %datetime% rsync执行完毕 >> rsync_log.txtecho. >> rsync_log.txt
echo ------------------------------------------------------- >> rsync_log.txt

http://www.mrgr.cn/news/58473.html

相关文章:

  • Linux 常用命令二
  • R语言 | paletteer包:拥有2100多个调色板!
  • 做信创项目需要什么资质、信创产品认证标准?
  • Python中的并发、并行与异步处理:线程安全的ID生成器
  • ESP32 S3 语音识别 语音唤醒程序流程
  • Java项目-基于springboot框架的校园在线拍卖系统项目实战(附源码+文档)
  • 使用高德API和MapboxGL实现路径规划并语音播报
  • Robot Framework实战
  • 使用 Kafka 和 MinIO 实现人工智能数据工作流
  • 反悔贪心学习笔记[浅谈]
  • Java多Module项目打包
  • 第一单元历年真题整理
  • Linux中查询Redis中的key和value(没有可视化工具)
  • C++常用函数定义解释
  • HBuilder X 中Vue.js基础使用->计算属性的应用(三)
  • 大数据环境下的数据清洗技术研究
  • 广告变现:2024年全球四大热门聚合广告平台
  • 什么是高存储服务器,有哪些优势,如何选择?
  • 数据挖掘:基于电力知识图谱的客户画像构建实施方案
  • 助力FP商家躲过审核机制,规避封号风险
  • 光影交织,文旅融合:开启城市新风尚
  • csdn要打开或者无法刷新内容管理,文章无法发布或者未保存成功(服务器超时)-->先保存在自己的电脑里
  • Android Navigation传递复杂参数(自定义)
  • 台达A2伺服
  • 提升海外直播画质的关键因素与解决方案
  • 国产标准数字隔离器的未来---克里雅半导体