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
#
# Input parameters:
# <Path to server's 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.
# : In this case, the last part of path interpreted as the name of instance.
# [Path to BEC location] : Optional. By default, BEC location inside the server's root folder.
# <Path to server location> : Absolute, fully qualified path to server's root folder.
# <Path to instance> : Absolute, fully qualified path to server's instance folder.
# [Path to BEC's logs 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:
# 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 ]------------------------------
$daysAmount = 7 # Number of days to store logs
$serverLocation = "Z:\DayZServer" # Path to server's location
$instance = "Instance_1" # Instance's NAME.
$becLocation = "${serverLocation}\BEC" # Path to BEC
$noDelete = $false # For tests - don't delete logs
$daysAmount = 7 # Number of days to store logs
$noDelete = $true # For tests - don't delete logs
# -----------------------------------------------------------------------------
if ($args[0]) { $serverLocation = $args[0] }
if ($args[1]) { $instance = $args[1] }
if ($args[2]) { $becLocation = $args[2] }
# -------------------------[ !!! DON'T EDIT BELOW !!! ]------------------------
$serverLocation = $args[0]
$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)
$becLogDir = "${becLocation}\Log\${instance}"
$becDestDir = "${destDir}\BEC"
$instance = Split-Path -Path "${instanceDir}" -Leaf
$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"
$date = Get-Date
$fileList = $null
# # Debug output
# Write-Host "serverLocation: '${serverLocation}'"
# Write-Host " instance: '${instance}'"
# Write-Host " instanceDir: '${instanceDir}'"
# Write-Host " destDir: '${destDir}'"
# Write-Host " destDelDir: '${destDelDir}'"
# Write-Host " becLocation: '${becLocation}'"
# Write-Host " becLogDir: '${becLogDir}'"
# Write-Host " becDestDir: '${becDestDir}'"
#region ### DayZ Game ###
Write-Host "Rotating DAYZ logs..."
If (!(Test-Path -PathType Container $destDir)) {
New-Item -ItemType Directory -Path $destDir | Out-Null
Write-Host "Created new folder: ${destDir}"
}
Write-Host "Now DAYZ..."
$fileList = Get-Item -Path $instanceDir\*.rpt, $instanceDir\*.log, $instanceDir\*.adm | Where-Object { $_.LastWriteTime.Date -lt $date.Date }
# Write-Host $fileList -Separator "`r`n"
If (!(Test-Path -PathType Container $destDir)) {
New-Item -ItemType Directory -Path $destDir | Out-Null
Write-Host "Created new folder: ${destDir}"
}
Write-Host "Moving RPTs and LOGs to ${destDir}:"
Write-Host "Moving RPTs, ADMs and LOGs to ${destDir}:"
foreach ($file in $fileList) {
Move-Item -Path $file -Destination $destDir
Write-Host "Moved ${file} to ${destDir}"
Move-Item -Path $file -Destination $destDir -Force
Write-Host "Moved ${file} to ${destDir}"
}
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 "Removing RPTs, ADMs and LOGs:"
$destDelDir = $destDir
if ($noDelete) {
$destDelDir = "${destDir}\DeletedLogs"
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}!"
}
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 ""
#endregion
### BEC ###
Write-Host "Now BEC..."
#region ### BEC ###
if ($becDestDir) {
Write-Host "Rotating BEC logs..."
# $fileList = $null
If (!(Test-Path -PathType Container $becDestDir)) {
New-Item -ItemType Directory -Path $becDestDir | Out-Null
Write-Host "Created new folder: ${becDestDir}"
If (!(Test-Path -PathType Container $becDestDir)) {
New-Item -ItemType Directory -Path $becDestDir | Out-Null
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 }
# Write-Host $fileList -Separator "`r`n"
#region ### Admin Tool ###
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}:"
foreach ($file in $fileList) {
Move-Item -Path $file -Destination $becDestDir
Write-Host "Moved ${file} to ${becDestDir}"
Write-Host "Moving admintool's LOGs to ${adminToolDestDir}:"
foreach ($file in $fileList) {
Move-Item -Path $file -Destination $adminToolDestDir -Force
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)"
$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)"
#endregion
Write-Host "End Log rotation powershell script"