Merge pull request #3282 from verhoek/fix/last_succesful_run
Fix last succesful run
This commit is contained in:
@@ -18,8 +18,6 @@
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Duplicati.Library.Logging
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
+22
-22
@@ -713,37 +713,38 @@ 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.IBasicResults)
|
||||
if (result 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)result;
|
||||
backup.Metadata["LastRestoreDuration"] = r.Duration.ToString();
|
||||
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())
|
||||
{
|
||||
@@ -778,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,
|
||||
|
||||
@@ -43,11 +43,12 @@
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt translate>Last successful run:</dt>
|
||||
<dt translate>Last successful backup:</dt>
|
||||
<dd ng-hide="item.Backup.Metadata == null || item.Backup.Metadata.LastBackupFinished == null"
|
||||
title="{{item.Backup.Metadata.LastBackupFinished | parsetimestamp }}"
|
||||
translate translate-params-time="item.Backup.Metadata.LastBackupFinished | moment: 'calendar'"
|
||||
translate-params-duration="formatDuration(item.Backup.Metadata.LastDuration)">{{time}} (took {{duration}})</dd>
|
||||
translate-params-duration="formatDuration(item.Backup.Metadata.LastBackupDuration || item.Backup.Metadata.LastDuration)">{{time}} (took {{duration}})
|
||||
</dd>
|
||||
<dd>
|
||||
<span ng-show="item.Backup.Metadata == null || item.Backup.Metadata.LastBackupFinished == null">{{'Never' | translate}} - </span><a href class="action-link" ng-click="doRun(item.Backup.ID)" translate>Run now</a>
|
||||
</dd>
|
||||
|
||||
@@ -23,6 +23,12 @@
|
||||
<div ng-hide="item.Backup.Metadata == null || item.Backup.Metadata.TargetSizeString == null" class="subtext" translate translate-n="parseInt(item.Backup.Metadata.BackupListCount)" translate-plural="{{item.Backup.Metadata.TargetSizeString}} / {{$count}} Versions">{{item.Backup.Metadata.TargetSizeString}} / {{$count}} Version</div>
|
||||
|
||||
<div ng-show="item.Backup.Metadata == null || item.Backup.Metadata.TargetSizeString == null" class="subtext" translate>Unknown backup size and versions</div>
|
||||
|
||||
<div ng-hide="item.Backup.Metadata == null || item.Backup.Metadata.LastRestoreFinished == null"
|
||||
class="subtext"
|
||||
translate translate-params-time="item.Backup.Metadata.LastRestoreFinished | moment: 'calendar'"
|
||||
translate-params-duration="formatDuration(item.Backup.Metadata.LastRestoreDuration)">Last successful restore: {{time}} (took {{duration || '0 seconds'}})
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user