Update scripts.

This commit is contained in:
2024-06-23 14:25:05 +03:00
parent 9caaa3c2fa
commit e6de2995be
2 changed files with 211 additions and 93 deletions

72
Test-Start.bat Normal file
View File

@@ -0,0 +1,72 @@
@echo off
:: !!! Needs 'DAYZSERVERSLOCATION' envvar defined !!!
:: !!! setx DAYZSERVERSLOCATION Z:\Servers\DayZServer [/m]
::Server name
set serverName=RU11 Test Server
::Server files location
set serverLocation=%DAYZSERVERSLOCATION%
::Server profile location
set serverProfile=Instance_4
::Server Port
set serverPort=35400
::Logical CPU cores to use (Equal or less than available)
set serverCPU=2
::Server config
set serverConfig=serverDZ.cfg
::Server mods
set serverMods=
::Client mods
set clientMods=@CF;@VPPadminTools;@VanillaPlusPlusMap;@KAMAZ
::Startup parameters
set startupParams=-profiles=%serverProfile% -config=%serverProfile%\%serverConfig% -name=Server -port=%serverPort%
::Additional Startup parameters
set additionalParams=-cpuCount=%serverCPU% -adminLog
::Path to log rotation script
set scriptLocation=D:\Sync\SRC\PowerShell\wDayzLogRotation\wDayzLogRotation.ps1
@REM set scriptLocation=%serverLocation%\wDayzLogRotation.ps1
::BEC location
set becLocation=%serverLocation%\BEC
@REM set becLocation=
::AdminTool's logs location
set adminToolLogsLocation=%serverLocation%\%serverProfile%\VPPadminTools\Logging
@REM set adminToolLogsLocation=
:: !!! (DON'T EDIT BELOW) !!!
::Sets title for terminal
title %serverName% batch
set cwd=%CD%
cd /d "%serverLocation%"
::Prepare commandline
if defined serverMods set tsm="-serverMod=%serverMods%"
if defined clientMods set tcm="-mod=%clientMods%"
set allMods=%tsm% %tcm%
set cmdLine="DayZServer_x64.exe" %startupParams% %additionalParams% %allMods%
::BEC's logs location
if defined becLocation (
set becLogsLocation=%becLocation%\Log\%serverProfile%
) else (
set becLogsLocation=
)
::Start log rotation
powershell.exe -File "%scriptLocation%" "%serverLocation%" "%serverLocation%\%serverProfile%" "%becLogsLocation%" "%adminToolLogsLocation%"
goto _exit
timeout 3 /nobreak >nul
echo.
::Start DayZServer
start "DayZ %serverProfile%" /high %cmdLine%
::Start BEC
cd /d "%becLocation%"
start "BEC %serverProfile%" "%becLocation%\Bec.exe" -f %serverProfile%.cfg --dsc
:_exit
cd /d "%cwd%"
echo END

View File

@@ -3,68 +3,64 @@
# https://github.com/dreamforceinc # https://github.com/dreamforceinc
# #
# Input parameters: # Input parameters:
# <Path to server's location> : Absolute, fully qualified path to server's root folder. # <Path to server location> : Absolute, fully qualified path to server's root folder.
# <Name of instance> : Usually name of folder inside the server's root folder. Can be absolute path. # <Path to instance> : Absolute, fully qualified path to server's instance folder.
# : In this case, the last part of path interpreted as the name of instance. # [Path to BEC's logs location] : Optional. By default, BEC location inside the server's root folder.
# [Path to BEC location] : Optional. By default, BEC location inside the server's root folder. # [Path to Admin Tool's logs location]: Optional. By default, AT location inside the instance's folder.
# #
# Example: # Example:
# powershell.exe -File "wDayzLogRotation.ps1" "Z:\Servers\DayZServer" "Instance_1" "D:\server tools\BEC" # powershell.exe -File "wDayzLogRotation.ps1" "Z:\Servers\DayZServer" "Z:\Servers\DayZServer\profiles\Instance_1" "D:\server tools\BEC" "Z:\Servers\DayZServer\profiles\Instance_1\VPPadminTools"
# ------------------------------[ Configuration ]------------------------------ # ------------------------------[ Configuration ]------------------------------
$daysAmount = 7 # Number of days to store logs $daysAmount = 7 # Number of days to store logs
$serverLocation = "Z:\DayZServer" # Path to server's location $noDelete = $true # For tests - don't delete logs
$instance = "Instance_1" # Instance's NAME.
$becLocation = "${serverLocation}\BEC" # Path to BEC
$noDelete = $false # For tests - don't delete logs
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
if ($args[0]) { $serverLocation = $args[0] } # -------------------------[ !!! DON'T EDIT BELOW !!! ]------------------------
if ($args[1]) { $instance = $args[1] } $serverLocation = $args[0]
if ($args[2]) { $becLocation = $args[2] } $instanceDir = $args[1]
$becLogDir = $null
$adminToolLogDir = $null
if ($args[2]) { $becLogDir = $args[2] }
if ($args[3]) { $adminToolLogDir = $args[3] }
if ([System.IO.Path]::IsPathRooted($instance)) {
$instanceDir = "${instance}"
$instance = Split-Path -Path "${instanceDir}" -Leaf
} else {
$instanceDir = "${serverLocation}\${instance}"
}
if (![System.IO.Path]::IsPathRooted($becLocation)) {
$becLocation = "${serverLocation}\${becLocation}"
}
$destDir = "${instanceDir}\RotatedLogs"
$daysAmount = [Math]::Abs($daysAmount) $daysAmount = [Math]::Abs($daysAmount)
$becLogDir = "${becLocation}\Log\${instance}" $instance = Split-Path -Path "${instanceDir}" -Leaf
$becDestDir = "${destDir}\BEC" $destDir = "${instanceDir}\RotatedLogs"
$destDelDir = "${destDir}\DeletedLogs"
if ($becLogDir) { $becDestDir = "${destDir}\BEC" }
if ($adminToolLogDir) { $adminToolDestDir = "${destDir}\AdminTool" }
### Debug output ###
# Write-Host " serverLocation: '${serverLocation}'"
# Write-Host " instanceDir: '${instanceDir}'"
# Write-Host " instance: '${instance}'"
# Write-Host " destDir: '${destDir}'"
# Write-Host " destDelDir: '${destDelDir}'"
# Write-Host " becLogDir: '${becLogDir}'"
# Write-Host " becDestDir: '${becDestDir}'"
# Write-Host " adminToolLogDir: '${adminToolLogDir}'"
# Write-Host " adminToolDestDir: '${adminToolDestDir}'"
Write-Host "Start Log rotation powershell script" Write-Host "Start Log rotation powershell script"
$date = Get-Date $date = Get-Date
$fileList = $null
# # Debug output #region ### DayZ Game ###
# Write-Host "serverLocation: '${serverLocation}'" Write-Host "Rotating DAYZ logs..."
# Write-Host " instance: '${instance}'"
# Write-Host " instanceDir: '${instanceDir}'" If (!(Test-Path -PathType Container $destDir)) {
# Write-Host " destDir: '${destDir}'" New-Item -ItemType Directory -Path $destDir | Out-Null
# Write-Host " destDelDir: '${destDelDir}'" Write-Host "Created new folder: ${destDir}"
# Write-Host " becLocation: '${becLocation}'" }
# Write-Host " becLogDir: '${becLogDir}'"
# Write-Host " becDestDir: '${becDestDir}'"
Write-Host "Now DAYZ..."
$fileList = Get-Item -Path $instanceDir\*.rpt, $instanceDir\*.log, $instanceDir\*.adm | Where-Object { $_.LastWriteTime.Date -lt $date.Date } $fileList = Get-Item -Path $instanceDir\*.rpt, $instanceDir\*.log, $instanceDir\*.adm | Where-Object { $_.LastWriteTime.Date -lt $date.Date }
# Write-Host $fileList -Separator "`r`n" # Write-Host $fileList -Separator "`r`n"
If (!(Test-Path -PathType Container $destDir)) { Write-Host "Moving RPTs, ADMs and LOGs to ${destDir}:"
New-Item -ItemType Directory -Path $destDir | Out-Null
Write-Host "Created new folder: ${destDir}"
}
Write-Host "Moving RPTs and LOGs to ${destDir}:"
foreach ($file in $fileList) { foreach ($file in $fileList) {
Move-Item -Path $file -Destination $destDir Move-Item -Path $file -Destination $destDir -Force
Write-Host "Moved ${file} to ${destDir}" Write-Host "Moved ${file} to ${destDir}"
} }
Write-Host "Total: $($fileList.Length)" Write-Host "Total: $($fileList.Length)"
@@ -72,63 +68,113 @@ $fileList = Get-Item -Path $destDir\*.rpt, $destDir\*.log, $destDir\*.adm | Wher
# Write-Host $fileList -Separator "`r`n" # Write-Host $fileList -Separator "`r`n"
Write-Host "Removing RPTs, ADMs and LOGs:" Write-Host "Removing RPTs, ADMs and LOGs:"
$destDelDir = $destDir
if ($noDelete) { if ($noDelete) {
$destDelDir = "${destDir}\DeletedLogs" If (!(Test-Path -PathType Container $destDelDir)) {
New-Item -ItemType Directory -Path $destDelDir | Out-Null
If (!(Test-Path -PathType Container $destDelDir)) { Write-Host "Created new folder: ${destDelDir}"
New-Item -ItemType Directory -Path $destDelDir | Out-Null }
Write-Host "Created new folder: ${destDelDir}"
} foreach ($file in $fileList) {
Move-Item -Path $file -Destination $destDelDir -Force
foreach ($file in $fileList) { Write-Host "Moved ${file} to ${destDelDir}"
Move-Item -Path $file -Destination $destDelDir }
Write-Host "Moved ${file} to ${destDelDir}" } else {
} foreach ($file in $fileList) {
} Remove-Item -Path $file
else { Write-Host "Removed ${file}!"
foreach ($file in $fileList) { }
Remove-Item -Path $file
Write-Host "Removed ${file}!"
}
} }
Write-Host "Total: $($fileList.Length)" Write-Host "Total: $($fileList.Length)"
Write-Host "" Write-Host ""
#endregion
### BEC ### #region ### BEC ###
Write-Host "Now BEC..." if ($becDestDir) {
Write-Host "Rotating BEC logs..."
# $fileList = $null
If (!(Test-Path -PathType Container $becDestDir)) { If (!(Test-Path -PathType Container $becDestDir)) {
New-Item -ItemType Directory -Path $becDestDir | Out-Null New-Item -ItemType Directory -Path $becDestDir | Out-Null
Write-Host "Created new folder: ${becDestDir}" Write-Host "Created new folder: ${becDestDir}"
}
$fileList = Get-ChildItem -Path $becLogDir\*.log -Recurse | Where-Object { $_.LastWriteTime.Date -lt $date.Date }
# Write-Host $fileList -Separator "`r`n"
Write-Host "Moving BEC's LOGs to ${becDestDir}:"
foreach ($file in $fileList) {
Move-Item -Path $file -Destination $becDestDir -Force
Write-Host "Moved ${file} to ${becDestDir}"
}
Write-Host "Total: $($fileList.Length)"
$fileList = Get-Item -Path $becDestDir\*.log | Where-Object { $_.LastWriteTime -lt $date.AddDays(-($daysAmount)) }
# Write-Host $fileList -Separator "`r`n"
Write-Host "Removing BEC's LOGs:"
if ($noDelete) {
If (!(Test-Path -PathType Container $destDelDir)) {
New-Item -ItemType Directory -Path $destDelDir | Out-Null
Write-Host "Created new folder: ${destDelDir}"
}
foreach ($file in $fileList) {
Move-Item -Path $file -Destination $destDelDir
Write-Host "Moved ${file} to ${destDelDir}"
}
} else {
foreach ($file in $fileList) {
Remove-Item -Path $file
Write-Host "Removed ${file}!"
}
}
Write-Host "Total: $($fileList.Length)"
Write-Host ""
} }
#endregion
$fileList = Get-ChildItem -Path $becLogDir\*.log -Recurse | Where-Object { $_.LastWriteTime.Date -lt $date.Date } #region ### Admin Tool ###
# Write-Host $fileList -Separator "`r`n" if ($adminToolDestDir) {
Write-Host "Rotating AdminTool logs..."
If (!(Test-Path -PathType Container $adminToolDestDir)) {
New-Item -ItemType Directory -Path $adminToolDestDir | Out-Null
Write-Host "Created new folder: ${adminToolDestDir}"
}
$fileList = Get-ChildItem -Path $adminToolLogDir\*.txt, $adminToolLogDir\*.log -Recurse | Where-Object { $_.LastWriteTime.Date -lt $date.Date }
# Write-Host $fileList -Separator "`r`n"
Write-Host "Moving BEC's LOGs to ${becDestDir}:" Write-Host "Moving admintool's LOGs to ${adminToolDestDir}:"
foreach ($file in $fileList) { foreach ($file in $fileList) {
Move-Item -Path $file -Destination $becDestDir Move-Item -Path $file -Destination $adminToolDestDir -Force
Write-Host "Moved ${file} to ${becDestDir}" Write-Host "Moved ${file} to ${adminToolDestDir}"
}
Write-Host "Total: $($fileList.Length)"
$fileList = Get-Item -Path $adminToolDestDir\*.txt, $adminToolDestDir\*.log | Where-Object { $_.LastWriteTime -lt $date.AddDays(-($daysAmount)) }
# Write-Host $fileList -Separator "`r`n"
Write-Host "Removing admintool's LOGs:"
if ($noDelete) {
If (!(Test-Path -PathType Container $destDelDir)) {
New-Item -ItemType Directory -Path $destDelDir | Out-Null
Write-Host "Created new folder: ${destDelDir}"
}
foreach ($file in $fileList) {
Move-Item -Path $file -Destination $destDelDir -Force
Write-Host "Moved ${file} to ${destDelDir}"
}
} else {
foreach ($file in $fileList) {
Remove-Item -Path $file
Write-Host "Removed ${file}!"
}
}
Write-Host "Total: $($fileList.Length)"
Write-Host ""
} }
Write-Host "Total: $($fileList.Length)" #endregion
$fileList = Get-Item -Path $becDestDir\*.log | Where-Object { $_.LastWriteTime -lt $date.AddDays(-($daysAmount)) }
# Write-Host $fileList -Separator "`r`n"
Write-Host "Removing BEC's LOGs:"
if ($noDelete) {
foreach ($file in $fileList) {
Move-Item -Path $file -Destination $destDelDir
Write-Host "Moved ${file} to ${destDelDir}"
}
}
else {
foreach ($file in $fileList) {
Remove-Item -Path $file
Write-Host "Removed ${file}!"
}
}
Write-Host "Total: $($fileList.Length)"
Write-Host "End Log rotation powershell script" Write-Host "End Log rotation powershell script"