mirror of
https://github.com/tribufu/ServerManagers
synced 2026-05-06 15:17:34 +00:00
World Save Back and Restore Changes
1. added the SaveGames folder to the to the backup zip file. 2. now restores the SaveGames folder.
This commit is contained in:
parent
aa5c135be7
commit
a5e749963a
19 changed files with 408 additions and 96 deletions
|
|
@ -95,7 +95,7 @@
|
|||
<setting name="UpdateCheckTime" serializeAs="String">
|
||||
<value>720</value>
|
||||
</setting>
|
||||
<setting name="SavedArksRelativePath" serializeAs="String">
|
||||
<setting name="SavedFilesRelativePath" serializeAs="String">
|
||||
<value>ShooterGame\Saved\SavedArks</value>
|
||||
</setting>
|
||||
<setting name="HelpUrl" serializeAs="String">
|
||||
|
|
@ -356,6 +356,9 @@
|
|||
<setting name="ServerCallUrlDelay" serializeAs="String">
|
||||
<value>12</value>
|
||||
</setting>
|
||||
<setting name="SaveGamesRelativePath" serializeAs="String">
|
||||
<value>SaveGames</value>
|
||||
</setting>
|
||||
</ServerManagerTool.Config>
|
||||
<ServerManagerTool.Common.CommonConfig>
|
||||
<setting name="DefaultSteamAPIKey" serializeAs="String">
|
||||
|
|
|
|||
13
src/ARKServerManager/Config.Designer.cs
generated
13
src/ARKServerManager/Config.Designer.cs
generated
|
|
@ -309,9 +309,9 @@ namespace ServerManagerTool {
|
|||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("ShooterGame\\Saved\\SavedArks")]
|
||||
public string SavedArksRelativePath {
|
||||
public string SavedFilesRelativePath {
|
||||
get {
|
||||
return ((string)(this["SavedArksRelativePath"]));
|
||||
return ((string)(this["SavedFilesRelativePath"]));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3150,5 +3150,14 @@ namespace ServerManagerTool {
|
|||
this["DiscordBotAllServersKeyword"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("SaveGames")]
|
||||
public string SaveGamesRelativePath {
|
||||
get {
|
||||
return ((string)(this["SaveGamesRelativePath"]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@
|
|||
<Setting Name="UpdateCheckTime" Type="System.Int32" Scope="Application">
|
||||
<Value Profile="(Default)">720</Value>
|
||||
</Setting>
|
||||
<Setting Name="SavedArksRelativePath" Type="System.String" Scope="Application">
|
||||
<Setting Name="SavedFilesRelativePath" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">ShooterGame\Saved\SavedArks</Value>
|
||||
</Setting>
|
||||
<Setting Name="UpgradeConfig" Type="System.Boolean" Scope="User">
|
||||
|
|
@ -866,5 +866,8 @@
|
|||
<Setting Name="DiscordBotAllServersKeyword" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">all</Value>
|
||||
</Setting>
|
||||
<Setting Name="SaveGamesRelativePath" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">SaveGames</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
|
|
@ -2008,6 +2008,7 @@ namespace ServerManagerTool.Lib
|
|||
{
|
||||
LogProfileMessage("Back up world files started...");
|
||||
|
||||
var worldFileName = Path.GetFileName(worldFile);
|
||||
var backupFolder = GetServerBackupFolder(_profile);
|
||||
var mapName = ServerProfile.GetProfileMapFileName(_profile.ServerMap, _profile.PGM_Enabled, _profile.PGM_Name);
|
||||
var backupFileName = $"{mapName}_{_startTime:yyyyMMdd_HHmmss}{Config.Default.BackupExtension}";
|
||||
|
|
@ -2019,36 +2020,6 @@ namespace ServerManagerTool.Lib
|
|||
if (File.Exists(backupFile))
|
||||
File.Delete(backupFile);
|
||||
|
||||
var files = new List<string>
|
||||
{
|
||||
worldFile
|
||||
};
|
||||
|
||||
// get the player files
|
||||
var saveFolderInfo = new DirectoryInfo(saveFolder);
|
||||
var playerFileFilter = $"*{Config.Default.PlayerFileExtension}";
|
||||
var playerFiles = saveFolderInfo.GetFiles(playerFileFilter, SearchOption.TopDirectoryOnly);
|
||||
foreach (var file in playerFiles)
|
||||
{
|
||||
files.Add(file.FullName);
|
||||
}
|
||||
|
||||
// get the tribe files
|
||||
var tribeFileFilter = $"*{Config.Default.TribeFileExtension}";
|
||||
var tribeFiles = saveFolderInfo.GetFiles(tribeFileFilter, SearchOption.TopDirectoryOnly);
|
||||
foreach (var file in tribeFiles)
|
||||
{
|
||||
files.Add(file.FullName);
|
||||
}
|
||||
|
||||
// get the tribute tribe files
|
||||
var tributeTribeFileFilter = $"*{Config.Default.TributeTribeFileExtension}";
|
||||
var tributeTribeFiles = saveFolderInfo.GetFiles(tributeTribeFileFilter, SearchOption.TopDirectoryOnly);
|
||||
foreach (var file in tributeTribeFiles)
|
||||
{
|
||||
files.Add(file.FullName);
|
||||
}
|
||||
|
||||
var comment = new StringBuilder();
|
||||
comment.AppendLine($"Windows Platform: {Environment.OSVersion.Platform}");
|
||||
comment.AppendLine($"Windows Version: {Environment.OSVersion.VersionString}");
|
||||
|
|
@ -2061,7 +2032,48 @@ namespace ServerManagerTool.Lib
|
|||
comment.AppendLine($"PGM Server: {_profile.PGM_Enabled}");
|
||||
comment.AppendLine($"Process: {ServerProcess}");
|
||||
|
||||
ZipUtils.ZipFiles(backupFile, files, comment.ToString(), false);
|
||||
var saveFolderInfo = new DirectoryInfo(saveFolder);
|
||||
|
||||
// backup the world save file
|
||||
ZipUtils.ZipAFile(backupFile, worldFileName, worldFile, comment.ToString());
|
||||
|
||||
// backup the player files
|
||||
var playerFileFilter = $"*{Config.Default.PlayerFileExtension}";
|
||||
var playerFiles = saveFolderInfo.GetFiles(playerFileFilter, SearchOption.TopDirectoryOnly);
|
||||
foreach (var file in playerFiles)
|
||||
{
|
||||
ZipUtils.ZipAFile(backupFile, file.Name, file.FullName);
|
||||
}
|
||||
|
||||
// backup the tribe files
|
||||
var tribeFileFilter = $"*{Config.Default.TribeFileExtension}";
|
||||
var tribeFiles = saveFolderInfo.GetFiles(tribeFileFilter, SearchOption.TopDirectoryOnly);
|
||||
foreach (var file in tribeFiles)
|
||||
{
|
||||
ZipUtils.ZipAFile(backupFile, file.Name, file.FullName);
|
||||
}
|
||||
|
||||
// backup the tribute tribe files
|
||||
var tributeTribeFileFilter = $"*{Config.Default.TributeTribeFileExtension}";
|
||||
var tributeTribeFiles = saveFolderInfo.GetFiles(tributeTribeFileFilter, SearchOption.TopDirectoryOnly);
|
||||
foreach (var file in tributeTribeFiles)
|
||||
{
|
||||
ZipUtils.ZipAFile(backupFile, file.Name, file.FullName);
|
||||
}
|
||||
|
||||
// backup the save games files
|
||||
var saveGamesFolder = GetServerSaveGamesFolder();
|
||||
if (Directory.Exists(saveGamesFolder))
|
||||
{
|
||||
var saveGamesFolderInfo = new DirectoryInfo(saveGamesFolder);
|
||||
|
||||
var saveGamesFileFilter = $"*";
|
||||
var saveGamesFiles = saveGamesFolderInfo.GetFiles(saveGamesFileFilter, SearchOption.AllDirectories);
|
||||
foreach (var file in saveGamesFiles)
|
||||
{
|
||||
ZipUtils.ZipAFile(backupFile, file.FullName.Replace(saveGamesFolder, Config.Default.SaveGamesRelativePath), file.FullName);
|
||||
}
|
||||
}
|
||||
|
||||
LogProfileMessage($"Backed up world files - {saveFolder}");
|
||||
LogProfileMessage($"Backup file created - {backupFile}");
|
||||
|
|
@ -2404,6 +2416,8 @@ namespace ServerManagerTool.Lib
|
|||
|
||||
private string GetServerSaveFolder() => IOUtils.NormalizePath(ServerProfile.GetProfileSavePath(_profile.InstallDirectory, _profile.AltSaveDirectoryName, _profile.PGM_Enabled, _profile.PGM_Name));
|
||||
|
||||
private string GetServerSaveGamesFolder() => IOUtils.NormalizePath(ServerProfile.GetProfileSaveGamesPath(_profile.InstallDirectory));
|
||||
|
||||
private string GetServerVersionFile() => IOUtils.NormalizePath(Path.Combine(_profile.InstallDirectory, Config.Default.VersionFile));
|
||||
|
||||
public static Version GetServerVersion(string versionFile)
|
||||
|
|
|
|||
|
|
@ -4830,6 +4830,7 @@ namespace ServerManagerTool.Lib
|
|||
|
||||
var mapName = GetProfileMapFileName(this);
|
||||
var worldFileName = $"{mapName}{Config.Default.MapExtension}";
|
||||
var saveGamesFolder = GetProfileSaveGamesPath(this);
|
||||
|
||||
// check if the archive file contains the world save file at minimum
|
||||
if (isArchiveFile)
|
||||
|
|
@ -4854,11 +4855,12 @@ namespace ServerManagerTool.Lib
|
|||
|
||||
var worldFile = IOUtils.NormalizePath(Path.Combine(saveFolder, worldFileName));
|
||||
var restoreFileInfo = new FileInfo(restoreFile);
|
||||
int restoredFileCount;
|
||||
var restoredFileCount = 0;
|
||||
|
||||
if (isArchiveFile)
|
||||
{
|
||||
// create a list of files to be deleted
|
||||
var directories = new List<string>();
|
||||
var files = new List<string>
|
||||
{
|
||||
worldFile
|
||||
|
|
@ -4892,13 +4894,10 @@ namespace ServerManagerTool.Lib
|
|||
files.Add(file.FullName);
|
||||
}
|
||||
|
||||
//// get the player images files
|
||||
//var playerImageFileFilter = $"*{Config.Default.PlayerImageFileExtension}";
|
||||
//var playerImageFiles = saveFolderInfo.GetFiles(playerImageFileFilter, SearchOption.TopDirectoryOnly);
|
||||
//foreach (var file in playerImageFiles)
|
||||
//{
|
||||
// files.Add(file.FullName);
|
||||
//}
|
||||
if (Directory.Exists(saveGamesFolder) && ZipUtils.DoesFolderExist(restoreFile, Config.Default.SaveGamesRelativePath))
|
||||
{
|
||||
directories.Add(saveGamesFolder);
|
||||
}
|
||||
}
|
||||
|
||||
// delete the selected files
|
||||
|
|
@ -4914,14 +4913,32 @@ namespace ServerManagerTool.Lib
|
|||
}
|
||||
}
|
||||
|
||||
foreach (var directory in directories)
|
||||
{
|
||||
try
|
||||
{
|
||||
Directory.Delete(directory, true);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// if unable to delete, do not bother
|
||||
}
|
||||
}
|
||||
|
||||
// restore the files from the backup
|
||||
if (restoreAll)
|
||||
{
|
||||
restoredFileCount = ZipUtils.ExtractAllFiles(restoreFile, saveFolder);
|
||||
restoredFileCount += ZipUtils.ExtractFiles(restoreFile, saveFolder, sourceFolder: "", recurseFolders: false);
|
||||
|
||||
if (ZipUtils.DoesFolderExist(restoreFile, Config.Default.SaveGamesRelativePath))
|
||||
{
|
||||
var rootSaveFolder = Path.GetDirectoryName(saveGamesFolder);
|
||||
restoredFileCount += ZipUtils.ExtractFiles(restoreFile, rootSaveFolder, Config.Default.SaveGamesRelativePath, recurseFolders: true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
restoredFileCount = ZipUtils.ExtractAFile(restoreFile, worldFileName, saveFolder);
|
||||
restoredFileCount += ZipUtils.ExtractAFile(restoreFile, worldFileName, saveFolder);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -6691,6 +6708,16 @@ namespace ServerManagerTool.Lib
|
|||
return ModUtils.GetMapName(serverMap);
|
||||
}
|
||||
|
||||
public static string GetProfileSaveGamesPath(ServerProfile profile)
|
||||
{
|
||||
return GetProfileSaveGamesPath(profile?.InstallDirectory);
|
||||
}
|
||||
|
||||
public static string GetProfileSaveGamesPath(string installDirectory)
|
||||
{
|
||||
return Path.Combine(installDirectory ?? string.Empty, Config.Default.SavedRelativePath, Config.Default.SaveGamesRelativePath);
|
||||
}
|
||||
|
||||
public static string GetProfileSavePath(ServerProfile profile)
|
||||
{
|
||||
return GetProfileSavePath(profile?.InstallDirectory, profile?.AltSaveDirectoryName, profile?.PGM_Enabled ?? false, profile?.PGM_Name);
|
||||
|
|
@ -6706,8 +6733,8 @@ namespace ServerManagerTool.Lib
|
|||
}
|
||||
|
||||
if (pgmEnabled)
|
||||
return Path.Combine(installDirectory ?? string.Empty, Config.Default.SavedArksRelativePath, Config.Default.SavedPGMRelativePath, pgmName ?? string.Empty);
|
||||
return Path.Combine(installDirectory ?? string.Empty, Config.Default.SavedArksRelativePath);
|
||||
return Path.Combine(installDirectory ?? string.Empty, Config.Default.SavedFilesRelativePath, Config.Default.SavedPGMRelativePath, pgmName ?? string.Empty);
|
||||
return Path.Combine(installDirectory ?? string.Empty, Config.Default.SavedFilesRelativePath);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,31 @@
|
|||
<title>Ark Server Manager Version Feed</title>
|
||||
<subtitle>This is the Ark Server Manager release version feed.</subtitle>
|
||||
<link href="http://arkservermanager.freeforums.net/" />
|
||||
<updated>2022-04-23T00:00:00Z</updated>
|
||||
<updated>2022-05-02T00:00:00Z</updated>
|
||||
|
||||
<entry>
|
||||
<id>urn:uuid:018EF426-73B9-4BF6-9602-77EE2CFD864C</id>
|
||||
<title>1.1.424 (1.1.424.1)</title>
|
||||
<summary>1.1.424.1</summary>
|
||||
<link href="" />
|
||||
<updated>2022-05-02T00:00:00Z</updated>
|
||||
<content type="xhtml">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial, Verdana, Helvetica, Sans-Serif;font-size: .8em;">
|
||||
<p>
|
||||
<u style="font-size: .9em;">CHANGE</u>
|
||||
<br/>
|
||||
<ul>
|
||||
<li>World Save Backup - added the SaveGames folder to the to the backup zip file.</li>
|
||||
<li>World Save Restore - now restores the SaveGames folder.</li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</content>
|
||||
<author>
|
||||
<name>bletch</name>
|
||||
<email>bletch1971@hotmail.com</email>
|
||||
</author>
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<id>urn:uuid:8AD6F2C4-D9BD-41D5-BE91-DA23F31A2FA4</id>
|
||||
|
|
|
|||
|
|
@ -5,28 +5,22 @@
|
|||
<title>Ark Server Manager Version Feed</title>
|
||||
<subtitle>This is the Ark Server Manager beta version feed.</subtitle>
|
||||
<link href="http://arkservermanager.freeforums.net/" />
|
||||
<updated>2022-04-23T00:00:00Z</updated>
|
||||
<updated>2022-05-02T00:00:00Z</updated>
|
||||
|
||||
<entry>
|
||||
<id>urn:uuid:8AD6F2C4-D9BD-41D5-BE91-DA23F31A2FA4</id>
|
||||
<title>1.1.423 (1.1.423.1)</title>
|
||||
<summary>1.1.423.1</summary>
|
||||
<id>urn:uuid:018EF426-73B9-4BF6-9602-77EE2CFD864C</id>
|
||||
<title>1.1.424 (1.1.424.1)</title>
|
||||
<summary>1.1.424.1</summary>
|
||||
<link href="" />
|
||||
<updated>2022-04-23T00:00:00Z</updated>
|
||||
<updated>2022-05-02T00:00:00Z</updated>
|
||||
<content type="xhtml">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial, Verdana, Helvetica, Sans-Serif;font-size: .8em;">
|
||||
<p>
|
||||
<u style="font-size: .9em;">BUGFIX</u>
|
||||
<br/>
|
||||
<ul>
|
||||
<li>Fixed the discord bot Info command, to release the profile once the command has finished running.</li>
|
||||
</ul>
|
||||
<u style="font-size: .9em;">CHANGE</u>
|
||||
<br/>
|
||||
<ul>
|
||||
<li>Profile Discord Settings - added new checkbox to allow the profile to be included in discord commands using the Cluster Id as the alias.</li>
|
||||
<li>Realigned the default Player and Creature levels to the wiki.</li>
|
||||
<li>pt-BR Translation file updated.</li>
|
||||
<li>World Save Backup - added the SaveGames folder to the to the backup zip file.</li>
|
||||
<li>World Save Restore - now restores the SaveGames folder.</li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue