/// <summary> /// Delete local (source) files that do not exist in the destination. /// </summary> private bool DeleteLocalGhostFiles() { Logger.WriteLog(ErrorCodes.SyncPhase_DeletionBegun2, ErrorResources.SyncPhase_DeletionBegun, Severity.Information, VerboseLevel.User, true); DiscoveredObject[] files = Destination.GetObjects(); for (int i = 0; i < files.Length; i++) { ScanProgress(i, files.Length, files[i].FullName); if (files[i].Kind == ObjectKind.File) { string gcsObject = Helpers.RemoveSecExt(files[i].FullName); if (!ObjectExists(gcsObject)) { if (Destination.Delete(gcsObject, _wideDisplay)) { Interlocked.Increment(ref _deletedCount); } else { Interlocked.Increment(ref _errorCount); } } } else if (files[i].Kind == ObjectKind.Directory) { if (!Destination.AfterDirectoryScan(files[i].FullName, _wideDisplay)) { Interlocked.Increment(ref _errorCount); } } else { throw new SmkException($"Unsupported type for {files[i].GetType().Name}.{files[i].Kind}"); } } Logger.WriteLog(ErrorCodes.SyncPhase_DeletionEnded2, ErrorResources.SyncPhase_DeletionEnded, Severity.Information, VerboseLevel.User, true); return(_errorCount == 0); }
/// <summary> /// Delete local (source) files that do not exist in the destination. /// </summary> private bool DeleteLocalGhostFiles() { Logger.WriteLog(ErrorCodes.SyncPhase_DeletionBegun, ErrorResources.SyncPhase_DeletionBegun, Severity.Information, VerboseLevel.User, true); DiscoveredObject[] files = Destination.GetObjects(); string currentDir = null; for (int i = 0; i < files.Length; i++) { string localFile = $"{_path}{files[i].FullName}"; ScanProgress(i, files.Length, localFile); if (files[i].Kind == ObjectKind.File) { if ((Transform != null) && (Transform.IsSecured)) { localFile = Helpers.RemoveSecExt(localFile); } else if ((Transform != null) && (!Transform.IsSecured)) { localFile = $"{localFile}{Constants.EncryptedExt}"; } if (!File.Exists(localFile)) { if (Destination.Delete(files[i].FullName, _wideDisplay)) { Interlocked.Increment(ref _deletedCount); } else { Interlocked.Increment(ref _errorCount); } } if ((currentDir == null) && (currentDir != files[i].DirectoryName)) { if ((currentDir != null) && !Destination.AfterDirectoryScan(currentDir, _wideDisplay)) { Interlocked.Increment(ref _errorCount); } currentDir = files[i].DirectoryName; } } else if (files[i].Kind == ObjectKind.Directory) { if (!Destination.AfterDirectoryScan(files[i].FullName, _wideDisplay)) { Interlocked.Increment(ref _errorCount); } } else { throw new SmkException($"Unsupported type for {files[i].GetType().Name}.{files[i].Kind}"); } } Logger.WriteLog(ErrorCodes.SyncPhase_DeletionEnded, ErrorResources.SyncPhase_DeletionEnded, Severity.Information, VerboseLevel.User, true); return(_errorCount == 0); }