[mapguide-commits] r10156 - in branches/4.0/MgDev/Server/RepositoryAdmin/app: . Commands
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Fri Jul 18 03:53:18 PDT 2025
Author: jng
Date: 2025-07-18 03:53:16 -0700 (Fri, 18 Jul 2025)
New Revision: 10156
Modified:
branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/App.cs
branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/BackupCommand.cs
branches/4.0/MgDev/Server/RepositoryAdmin/app/Strings.Designer.cs
branches/4.0/MgDev/Server/RepositoryAdmin/app/Strings.resx
Log:
#2879: Implement full snapshot determination for online backup and ensure target directory exists for offline backup
Modified: branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/App.cs
===================================================================
--- branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/App.cs 2025-06-16 12:14:03 UTC (rev 10155)
+++ branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/App.cs 2025-07-18 10:53:16 UTC (rev 10156)
@@ -191,6 +191,10 @@
bkDir = new DirectoryInfo(Path.Combine(cmd.OutputPath.FullName, "LastColdBackup"));
bkDir.Create();
}
+ else
+ {
+ bkDir.Create();
+ }
var outDir = bkDir;
TransferDatabaseFiles(outDir);
@@ -199,13 +203,46 @@
return 0;
}
- internal int BackupOnlineRepositories()
+ internal int BackupOnlineRepositories(BackupCommand bkCmd)
{
stdout.WriteLine(Strings.IDS_PROGRESS_BACKING_UP_ONLINE_REPOSITORY);
bool fullSnapshot = true;
- // TODO: fullSnapshot flag determination logic
+ var bkDir = new DirectoryInfo(Path.Combine(cmd.OutputPath.FullName, "LastHotBackup"));
+ if (bkDir.Exists)
+ {
+ var dbFiles = this.GetDatabaseFiles(bkDir.FullName).ToList();
+ var logFiles = this.GetLogFiles(bkDir.FullName, false).ToList();
+ stdout.WriteLine(Strings.BackupOnlineFileCount, dbFiles.Count, logFiles.Count);
+
+ if ((dbFiles.Count == 0 && logFiles.Count != 0) || (dbFiles.Count != 0 && logFiles.Count == 0))
+ {
+ // Rename current LastHotBackup to BAD_BK_yyyy-mm-dd-hh-mm-ss
+ var localNow = DateTime.Now;
+ var newName = $"BAD_BK_{localNow.Year}-{localNow.Month:00}-{localNow.Day:00}-{localNow.Hour:00}-{localNow.Minute:00}-{localNow.Second:00}";
+ bkDir.MoveTo(newName);
+ }
+ else
+ {
+ var unusedFiles = this.GetLogFiles(bkDir.FullName, true).ToList();
+ var numActiveFiles = logFiles.Count - unusedFiles.Count;
+
+ stdout.WriteLine(Strings.BackupOnlineUnusedCount, unusedFiles.Count, numActiveFiles);
+
+ if (numActiveFiles > bkCmd.Level)
+ {
+ var localNow = bkDir.LastWriteTime;
+ var newName = $"HOT_BK_{localNow.Year}-{localNow.Month:00}-{localNow.Day:00}-{localNow.Hour:00}-{localNow.Minute:00}-{localNow.Second:00}";
+ bkDir.MoveTo(newName);
+ }
+ else
+ {
+ fullSnapshot = false;
+ }
+ }
+ }
+
var outDir = cmd.OutputPath.CreateSubdirectory("LastHotBackup");
if (fullSnapshot)
{
Modified: branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/BackupCommand.cs
===================================================================
--- branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/BackupCommand.cs 2025-06-16 12:14:03 UTC (rev 10155)
+++ branches/4.0/MgDev/Server/RepositoryAdmin/app/Commands/BackupCommand.cs 2025-07-18 10:53:16 UTC (rev 10156)
@@ -49,7 +49,7 @@
}
else
{
- return app.BackupOnlineRepositories();
+ return app.BackupOnlineRepositories(this);
}
}
}
\ No newline at end of file
Modified: branches/4.0/MgDev/Server/RepositoryAdmin/app/Strings.Designer.cs
===================================================================
--- branches/4.0/MgDev/Server/RepositoryAdmin/app/Strings.Designer.cs 2025-06-16 12:14:03 UTC (rev 10155)
+++ branches/4.0/MgDev/Server/RepositoryAdmin/app/Strings.Designer.cs 2025-07-18 10:53:16 UTC (rev 10156)
@@ -120,6 +120,24 @@
}
/// <summary>
+ /// Looks up a localized string similar to # db files: {0} # log files: {1}.
+ /// </summary>
+ public static string BackupOnlineFileCount {
+ get {
+ return ResourceManager.GetString("BackupOnlineFileCount", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to # unused files: {0} # active files: {1}.
+ /// </summary>
+ public static string BackupOnlineUnusedCount {
+ get {
+ return ResourceManager.GetString("BackupOnlineUnusedCount", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Argument out of range: {0}.
/// </summary>
public static string IDS_ERR_ARGUMENT_OUT_OF_RANGE {
Modified: branches/4.0/MgDev/Server/RepositoryAdmin/app/Strings.resx
===================================================================
--- branches/4.0/MgDev/Server/RepositoryAdmin/app/Strings.resx 2025-06-16 12:14:03 UTC (rev 10155)
+++ branches/4.0/MgDev/Server/RepositoryAdmin/app/Strings.resx 2025-07-18 10:53:16 UTC (rev 10156)
@@ -140,6 +140,12 @@
<data name="ArgHelp_Restore_OutputPath" xml:space="preserve">
<value>Path to the destination location to where the repository is restored</value>
</data>
+ <data name="BackupOnlineFileCount" xml:space="preserve">
+ <value># db files: {0} # log files: {1}</value>
+ </data>
+ <data name="BackupOnlineUnusedCount" xml:space="preserve">
+ <value># unused files: {0} # active files: {1}</value>
+ </data>
<data name="IDS_ERR_ARGUMENT_OUT_OF_RANGE" xml:space="preserve">
<value>Argument out of range: {0}</value>
</data>
More information about the mapguide-commits
mailing list