From 2d31386ae51daea02e63bc5763921be04c979062 Mon Sep 17 00:00:00 2001 From: verhoek Date: Tue, 19 Jun 2018 21:38:04 +0200 Subject: [PATCH 1/6] Wiped unnecessary imports. --- Duplicati/Library/Logging/Timer.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/Duplicati/Library/Logging/Timer.cs b/Duplicati/Library/Logging/Timer.cs index 7ae58072b..197a9e72e 100644 --- a/Duplicati/Library/Logging/Timer.cs +++ b/Duplicati/Library/Logging/Timer.cs @@ -18,8 +18,6 @@ // #endregion using System; -using System.Collections.Generic; -using System.Text; namespace Duplicati.Library.Logging { From fcc5fe1a54898204e178a36a4a16c35504b338a5 Mon Sep 17 00:00:00 2001 From: verhoek Date: Wed, 20 Jun 2018 09:20:45 +0200 Subject: [PATCH 2/6] Fixed typo. --- Duplicati/Library/Main/Operation/RestoreHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Duplicati/Library/Main/Operation/RestoreHandler.cs b/Duplicati/Library/Main/Operation/RestoreHandler.cs index ac5a6fa69..073c09c58 100644 --- a/Duplicati/Library/Main/Operation/RestoreHandler.cs +++ b/Duplicati/Library/Main/Operation/RestoreHandler.cs @@ -904,7 +904,7 @@ namespace Duplicati.Library.Main.Operation if ((currentAttr & System.IO.FileAttributes.ReadOnly) != 0) // clear readonly attribute { if (options.Dryrun) - Logging.Log.WriteDryrunMessage(LOGTAG, "WouldResetReadOnlyAttribyte", "Would reset read-only attribute on file: {0}", targetpath); + Logging.Log.WriteDryrunMessage(LOGTAG, "WouldResetReadOnlyAttribute", "Would reset read-only attribute on file: {0}", targetpath); else m_systemIO.SetFileAttributes(targetpath, currentAttr & ~System.IO.FileAttributes.ReadOnly); } if (options.Dryrun) From d1181fd722829726441095877d3c4eb7559bc82d Mon Sep 17 00:00:00 2001 From: verhoek Date: Wed, 20 Jun 2018 09:22:11 +0200 Subject: [PATCH 3/6] Made last duration more precise in web ui. --- Duplicati/Server/webroot/ngax/templates/home.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Duplicati/Server/webroot/ngax/templates/home.html b/Duplicati/Server/webroot/ngax/templates/home.html index f822aed94..f56c5d00f 100644 --- a/Duplicati/Server/webroot/ngax/templates/home.html +++ b/Duplicati/Server/webroot/ngax/templates/home.html @@ -43,11 +43,12 @@
-
Last successful run:
+
Last successful backup:
{{time}} (took {{duration}})
+ translate-params-duration="formatDuration(item.Backup.Metadata.LastBackupDuration || item.Backup.Metadata.LastDuration)">{{time}} (took {{duration}}) +
{{'Never' | translate}} - Run now
From f320ec53a5c42a17eb8540b936be9e1863b71181 Mon Sep 17 00:00:00 2001 From: verhoek Date: Wed, 20 Jun 2018 09:24:06 +0200 Subject: [PATCH 4/6] Remove unused basic result timing info. If needed for other task types, we should store them with their own key. Added restore timing info. --- Duplicati/Server/Runner.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Duplicati/Server/Runner.cs b/Duplicati/Server/Runner.cs index 5f13b2bfd..f4d85430e 100644 --- a/Duplicati/Server/Runner.cs +++ b/Duplicati/Server/Runner.cs @@ -715,12 +715,12 @@ namespace Duplicati.Server private static void UpdateMetadata(Duplicati.Server.Serialization.Interface.IBackup backup, object o) { - if (o is Duplicati.Library.Interface.IBasicResults) + if (o is Duplicati.Library.Interface.IRestoreResults) { - var r = (Duplicati.Library.Interface.IBasicResults)o; - backup.Metadata["LastDuration"] = r.Duration.ToString(); - backup.Metadata["LastStarted"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).BeginTime.ToUniversalTime()); - backup.Metadata["LastFinished"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).EndTime.ToUniversalTime()); + var r = (Duplicati.Library.Interface.IRestoreResults)o; + backup.Metadata["LastRestoreDuration"] = r.Duration.ToString(); + backup.Metadata["LastRestoreStarted"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).BeginTime.ToUniversalTime()); + backup.Metadata["LastRestoreFinished"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).EndTime.ToUniversalTime()); } if (o is Duplicati.Library.Interface.IParsedBackendStatistics) @@ -744,6 +744,7 @@ namespace Duplicati.Server backup.Metadata["SourceSizeString"] = Duplicati.Library.Utility.Utility.FormatSizeString(r.SizeOfExaminedFiles); backup.Metadata["LastBackupStarted"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).BeginTime.ToUniversalTime()); backup.Metadata["LastBackupFinished"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).EndTime.ToUniversalTime()); + backup.Metadata["LastBackupDuration"] = r.Duration.ToString(); if (r.FilesWithError > 0 || r.Warnings.Any() || r.Errors.Any()) { From 680984d936b419c147ba0be1c16da354e3af8bd4 Mon Sep 17 00:00:00 2001 From: verhoek Date: Wed, 20 Jun 2018 09:29:14 +0200 Subject: [PATCH 5/6] We only update metadata in this function for IBasicResults. --- Duplicati/Server/Runner.cs | 41 +++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/Duplicati/Server/Runner.cs b/Duplicati/Server/Runner.cs index f4d85430e..87f6cebae 100644 --- a/Duplicati/Server/Runner.cs +++ b/Duplicati/Server/Runner.cs @@ -713,37 +713,37 @@ namespace Duplicati.Server } } - private static void UpdateMetadata(Duplicati.Server.Serialization.Interface.IBackup backup, object o) + private static void UpdateMetadata(Duplicati.Server.Serialization.Interface.IBackup backup, Duplicati.Library.Interface.IBasicResults result) { - if (o is Duplicati.Library.Interface.IRestoreResults) + if (result is Duplicati.Library.Interface.IRestoreResults) { - var r = (Duplicati.Library.Interface.IRestoreResults)o; + var r = (Duplicati.Library.Interface.IRestoreResults)result; backup.Metadata["LastRestoreDuration"] = r.Duration.ToString(); - backup.Metadata["LastRestoreStarted"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).BeginTime.ToUniversalTime()); - backup.Metadata["LastRestoreFinished"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).EndTime.ToUniversalTime()); + backup.Metadata["LastRestoreStarted"] = Library.Utility.Utility.SerializeDateTime(result.BeginTime.ToUniversalTime()); + backup.Metadata["LastRestoreFinished"] = Library.Utility.Utility.SerializeDateTime(result.EndTime.ToUniversalTime()); } - if (o is Duplicati.Library.Interface.IParsedBackendStatistics) + if (result is Duplicati.Library.Interface.IParsedBackendStatistics) { - var r = (Duplicati.Library.Interface.IParsedBackendStatistics)o; + var r = (Duplicati.Library.Interface.IParsedBackendStatistics)result; UpdateMetadata(backup, r); } - if (o is Duplicati.Library.Interface.IBackendStatsticsReporter) + if (result is Duplicati.Library.Interface.IBackendStatsticsReporter) { - var r = (Duplicati.Library.Interface.IBackendStatsticsReporter)o; + var r = (Duplicati.Library.Interface.IBackendStatsticsReporter)result; if (r.BackendStatistics is Duplicati.Library.Interface.IParsedBackendStatistics) UpdateMetadata(backup, (Duplicati.Library.Interface.IParsedBackendStatistics)r.BackendStatistics); } - if (o is Duplicati.Library.Interface.IBackupResults) + if (result is Duplicati.Library.Interface.IBackupResults) { - var r = (Duplicati.Library.Interface.IBackupResults)o; + var r = (Duplicati.Library.Interface.IBackupResults)result; backup.Metadata["SourceFilesSize"] = r.SizeOfExaminedFiles.ToString(); backup.Metadata["SourceFilesCount"] = r.ExaminedFiles.ToString(); backup.Metadata["SourceSizeString"] = Duplicati.Library.Utility.Utility.FormatSizeString(r.SizeOfExaminedFiles); - backup.Metadata["LastBackupStarted"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).BeginTime.ToUniversalTime()); - backup.Metadata["LastBackupFinished"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).EndTime.ToUniversalTime()); + backup.Metadata["LastBackupStarted"] = Library.Utility.Utility.SerializeDateTime(result.BeginTime.ToUniversalTime()); + backup.Metadata["LastBackupFinished"] = Library.Utility.Utility.SerializeDateTime(result.EndTime.ToUniversalTime()); backup.Metadata["LastBackupDuration"] = r.Duration.ToString(); if (r.FilesWithError > 0 || r.Warnings.Any() || r.Errors.Any()) @@ -779,24 +779,23 @@ namespace Duplicati.Server ); } } - else if (o is Duplicati.Library.Interface.IBasicResults) + else { - var r = (Duplicati.Library.Interface.IBasicResults)o; - if (r.ParsedResult != Library.Interface.ParsedResultType.Success) + if (result.ParsedResult != Library.Interface.ParsedResultType.Success) { - var type = r.ParsedResult == Library.Interface.ParsedResultType.Warning + var type = result.ParsedResult == Library.Interface.ParsedResultType.Warning ? NotificationType.Warning : NotificationType.Error; - var title = r.ParsedResult == Library.Interface.ParsedResultType.Warning + var title = result.ParsedResult == Library.Interface.ParsedResultType.Warning ? (backup.IsTemporary ? "Warning" : string.Format("Warning while running {0}", backup.Name)) : (backup.IsTemporary ? "Error" : string.Format("Error while running {0}", backup.Name)); - var message = r.ParsedResult == Library.Interface.ParsedResultType.Warning - ? string.Format("Got {0} warning(s) ", r.Warnings.Count()) - : string.Format("Got {0} error(s) ", r.Errors.Count()); + var message = result.ParsedResult == Library.Interface.ParsedResultType.Warning + ? string.Format("Got {0} warning(s) ", result.Warnings.Count()) + : string.Format("Got {0} error(s) ", result.Errors.Count()); Program.DataConnection.RegisterNotification( type, From b96ce1a5be22952f01fbab5b1d5d385c71a2addd Mon Sep 17 00:00:00 2001 From: verhoek Date: Wed, 20 Jun 2018 09:44:05 +0200 Subject: [PATCH 6/6] Added info when a restore was last successful, similarly to backups in the home template. --- Duplicati/Server/webroot/ngax/templates/restorewizard.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Duplicati/Server/webroot/ngax/templates/restorewizard.html b/Duplicati/Server/webroot/ngax/templates/restorewizard.html index e3a7c22a7..49a5d6fea 100644 --- a/Duplicati/Server/webroot/ngax/templates/restorewizard.html +++ b/Duplicati/Server/webroot/ngax/templates/restorewizard.html @@ -23,6 +23,12 @@
{{item.Backup.Metadata.TargetSizeString}} / {{$count}} Version
Unknown backup size and versions
+ +
Last successful restore: {{time}} (took {{duration || '0 seconds'}}) +