Kenneth Skovhede
9dfe977d3f
Changed logic so the source providers are now logically mounted into the source directory structure.
...
This fixes the restore issues as all sources will now appear as if they were originally part of the source file system.
The backend implementation has now been simplified so the backends only return names of entries with no path information. Most backends already do this, but the S3 backends did not, so this was fixed as well.
This also clears up the interfaces, so the backend does not know about the `ISourceProviderEntry`. All mapping is done by the `BackendSourceProvider`, making it simpler to support other backends as sources.
2025-02-21 16:06:55 +01:00
Kenneth Skovhede
cd512ea7dd
Changed remote path prefix to > to avoid clash with literal string prefix @
2025-02-21 13:25:00 +01:00
Kenneth Skovhede
1716d09b51
Fixed source providers for S3, CIFS, and SSH.
...
Made the SMBShareConnection slightly more robust.
Introduced v2 List API to S3 backend, currently it retains v1 as the default.
Changed S3 backends to not recurse, potentially making smaller listings. This option can be disabled if it breaks things.
Added support for relative paths in the SSH backend.
2025-02-21 13:20:52 +01:00
Kenneth Skovhede
cf5b4bb24d
Added support for Wmic based Windows VSS snapshots.
...
Refactored code a bit to be easier to understand.
2025-02-19 14:00:14 +01:00
Kenneth Skovhede
bb5fd80a29
Implemented support for some backends as sources: SSH, CIFS, and S3
2025-02-17 14:01:08 +01:00
Kenneth Skovhede
6bbc93b8df
Merge remote-tracking branch 'origin/master' into feature/alternate-source-provider
2025-02-16 16:37:12 +01:00
Kenneth Skovhede
8c935a7344
This creates a new ISourceProvider interface for describing a data source.
...
With this interface it is possible to wrap the current support for snapshots and USN and simplify the enumeration.
This makes a number of assumptions into fields such as `IsMetaEntry` and `IsRootEntry` that removes code that was checking for various properties.
This first commit has support for VSS and USN as well as "naked" files, keeping feature parity.
There is also an experimental support for loading a backend-as-a-source. The support for this is currently limited as the backends need to be extended to support a folder concept.
2025-02-09 16:14:22 +01:00
Kenneth Skovhede
a8dea5c352
Fixed an issue with dropping existing permissions on Windows.
...
When setting the folder permissions on an existing folder, it would remove the permissions on items inside the folder.
This would cause the files and subfolders to have zero permissions, and reject any interaction.
2025-02-07 16:10:30 +01:00
Kenneth Skovhede
f7536df9c2
Added explicit access for the LocalSystem user as suggested.
2025-02-06 21:47:28 +01:00
Kenneth Skovhede
a68dba607e
Added support for using the current uid/gid instead of using the file uid/gid
2025-02-06 17:21:17 +01:00
Kenneth Skovhede
f0f79418d8
Fixed logic so the permissions are always applied, unless the user specifically opts out by placing a file named insecure-permissions.txt in the data folder.
2025-02-06 17:09:18 +01:00
Kenneth Skovhede
ebdfc774c2
Removed static IO_WIN and IO_SYS as cross-platform calls are not possible.
2025-02-06 16:57:12 +01:00
Kenneth Skovhede
aab91eb0df
Added protection to newly create data folder and databases
2025-02-06 16:56:06 +01:00
Kenneth Skovhede
fac12ba772
Further consolidated the data folder.
...
Added support for `--portable-mode` and `--server-datafolder` for the CLI, ServerUtil, and Agent.
Fixed a few places where file reads were not cached properly.
Moved some responsibilities of UpdaterManager into DataFolderManager.
This now supports storing `machineid.txt` and `installation.txt` inside the path pointed to by `--server-datafolder` or alternatively with `--portable-mode`.
It is possible that some fringe backwards compatibility is lost with this update.
Fixed an issue with AutoUpdater crashing on check/download.
This fixes #5902
2025-01-28 13:01:35 +01:00
Kenneth Skovhede and GitHub
997891525a
Updated license-updater to update csproj files ( #5898 )
...
* Updated license-updater to update csproj files
* License updates
2025-01-22 21:04:19 +01:00
Carl Johnsen
0861bc0a73
Added FileOpenReadWrite function
2025-01-17 12:26:03 +01:00
Kenneth Skovhede and GitHub
9464caf622
Feature/update license 2025 ( #5851 )
...
* Fixed some minor whitespace issues
* Updated all copyright to 2025
2025-01-07 09:40:39 +01:00
Marcelo Ceccon
d4d9c47824
Further progress on removal of build warnings.
...
None of these changes have impact on code execution, they are mainly part of the effort to remove all build warnings.
The removal of Thread.ResetAbort leaves a TODO for us to integrate CancelationToken when it gets propagated down here on future changes.
2024-11-07 18:02:15 +01:00
Kenneth Skovhede
14cd6a3395
Fixed issue with acessing a drive through the VSS snapshot.
...
This fixes #5259
2024-08-02 16:37:29 +02:00
Suguru Hirahara
556f1ee958
Change eg. to e.g.
2024-07-27 22:51:10 -04:00
Suguru Hirahara
ae57dee0f0
Remove redundant space characters from *.cs and *.html
2024-07-26 00:10:31 -04:00
Kenneth Skovhede and GitHub
f70748359a
Merge pull request #5211 from duplicati/feature/remove-alphafs
...
Removing unsupported AlphaFS.
2024-06-11 10:44:49 +02:00
Kenneth Skovhede
7c9f964eeb
Removing unsupported AlphaFS.
...
This updates #5210
2024-05-30 20:46:25 +02:00
Jojo-1000
930f1c8bd3
Fix most unsupported platform warnings.
2024-05-30 01:50:02 +02:00
Jojo-1000
1dc1fd83af
Add SupportedOSPlatform attribute and target windows where appropriate.
2024-05-30 01:22:16 +02:00
Kenneth Skovhede
c49e5609a9
Merge remote-tracking branch 'origin/master' into feature/kestrel-avalonia-upgrade
2024-03-07 06:35:15 +01:00
Kenneth Skovhede and GitHub
550b7d985d
Merge pull request #5062 from Jojo-1000/improve-list-speed
...
Improve file backend list speed
2024-03-04 13:39:38 +01:00
Kenneth Skovhede
473c6cbbb8
Merge commit '4f577c65a4d8806f79637c50c21ca3a683c5a07a' into feature/kestrel-avalonia-upgrade
2024-03-04 12:21:53 +01:00
Kenneth Skovhede
fb863ea14e
Updated the common library, using the Nuget Posix package
2024-03-01 14:30:28 +01:00
Kenneth Skovhede
40dd3c6816
Updated all license mentions to MIT
2024-02-28 15:45:30 +01:00
Jojo-1000
f7e435b1dd
Improve file backend list speed.
...
Directly list FileInfo instead of lookups by filename. This greatly speeds up backup verify on exFAT.
Closes #5061
2023-11-19 20:04:37 +01:00
Thomas Suckow
78197453a1
Merge remote-tracking branch master into feature/net5-avalonia
...
# Conflicts:
# Duplicati CommandLine Only.sln
# Duplicati.sln
# Duplicati/CommandLine/BackendTester/Duplicati.CommandLine.BackendTester.csproj
# Duplicati/CommandLine/BackendTool/Duplicati.CommandLine.BackendTool.csproj
# Duplicati/CommandLine/Duplicati.CommandLine.csproj
# Duplicati/CommandLine/RecoveryTool/Duplicati.CommandLine.RecoveryTool.csproj
# Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
# Duplicati/GUI/Duplicati.GUI.TrayIcon/app.config
# Duplicati/Library/AutoUpdater/UpdaterManager.cs
# Duplicati/Library/Backend/Jottacloud/Duplicati.Library.Backend.Jottacloud.csproj
# Duplicati/Library/Main/Duplicati.Library.Main.csproj
# Duplicati/Library/Utility/Duplicati.Library.Utility.csproj
# Duplicati/Library/Utility/Utility.cs
# Duplicati/Server/Duplicati.Server.csproj
# Duplicati/Server/app.config
# Duplicati/Service/app.config
# Duplicati/UnitTest/BackendToolTests.cs
# Duplicati/UnitTest/Duplicati.UnitTest.csproj
# guiTests/guiTest.py
2022-11-11 21:40:08 -08:00
Thomas Suckow
817b1d5bc2
Try to debug time discrepency
2022-05-06 21:52:19 -07:00
albertony
15ccf8130a
Ignore exception when file access time is not valid
...
When getting the value from FileSystemInfo.LastAccessTime, it will internally convert
the FILETIME value from Windows API to a DateTime. If the value represents a date after
12/31/9999 it will throw ArgumentOutOfRangeException, because this is not supported by
DateTime. Some file systems seem to set strange access timestamps on files, which
may lead to this exception being thrown. Since the last accessed timestamp is not
important such exceptions are now just silently ignored.
2022-04-02 20:56:20 +02:00
Thomas Suckow
d528703fe7
Merge branch 'master' into experiment/net5-split
...
# Conflicts:
# .github/workflows/tests.yml
# Duplicati.sln
# Duplicati/CommandLine/BackendTester/Duplicati.CommandLine.BackendTester.csproj
# Duplicati/CommandLine/BackendTool/Duplicati.CommandLine.BackendTool.csproj
# Duplicati/CommandLine/Duplicati.CommandLine.csproj
# Duplicati/CommandLine/RecoveryTool/Duplicati.CommandLine.RecoveryTool.csproj
# Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
# Duplicati/Library/Backend/AzureBlob/AzureBlobWrapper.cs
# Duplicati/Library/Backend/Mega/Duplicati.Library.Backend.Mega.csproj
# Duplicati/Library/Backend/Mega/packages.config
# Duplicati/Library/Backend/OAuthHelper/Duplicati.Library.OAuthHelper.csproj
# Duplicati/Library/Backend/Tardigrade/Duplicati.Library.Backend.Tardigrade.csproj
# Duplicati/Library/Backend/Tardigrade/Properties/AssemblyInfo.cs
# Duplicati/Library/Backend/Tardigrade/packages.config
# Duplicati/Library/Common/Duplicati.Library.Common.csproj
# Duplicati/Library/Common/IO/SystemIOWindows.cs
# Duplicati/Library/Modules/Builtin/Duplicati.Library.Modules.Builtin.csproj
# Duplicati/Library/Modules/Builtin/packages.config
# Duplicati/Library/Utility/Utility.cs
# Duplicati/License/Duplicati.License.csproj
# Duplicati/Server/Duplicati.Server.csproj
# Duplicati/Server/packages.config
# Duplicati/UnitTest/Duplicati.UnitTest.csproj
2022-02-22 19:04:01 -08:00
Dean Ferreyra
c50223eafe
Renames relating to the extended device path prefix, \\?\
2021-11-12 07:29:43 -08:00
Dean Ferreyra
158614d59a
Refactor \\?\ prefix tests, rename source files, plus other review issues
2021-11-09 22:50:41 -08:00
Dean Ferreyra
459d1f27f6
Formalize inclusion of code from https://github.com/dotnet
...
Fix SystemIOWindows.PathGetFullPath per review comments.
Add unit tests for SystemIOWindows.PathGetFullPath and SystemIOWindows.PrefixWithUNC. Also, fix a bug in the SystemIOWindows.PrefixWithUNC change that was exposed by these new unit tests.
In BackendToolTests, remove unused [Setup] and [TearDown] methods.
2021-11-08 07:42:07 -08:00
Dean Ferreyra
0e8280f6f3
Fix SystemIOWindows handling of relative paths
...
The handling of relative paths in SystemIOWindows was broken by changes for #4256 .
Change SystemIOWindows.PrefixWithUNC to only prefix paths with `\\?\` when they can be prefixed; i.e., only prefix paths that are fully qualified and that don't contain relative path components like `.` or `..`. This way, relative paths passed to SystemIOWindows methods work correctly again. Also support network paths specified using forward slashes; e.g., `//example.com/share/foo.txt`.
Simplify SystemIOWindows.GetFullPath since Path.GetFullPath will honor `\\?\` prefixes and can replace forward slashes with backslashes, etc.
Copy and adapt source for Path.IsPathFullyQualified from https://github.com/dotnet/runtime , which is MIT licensed.
Add unit test for Duplicati.CommandLine.BackendTool to validate the fix.
This fixes #4632 .
2021-11-06 17:14:18 -07:00
Kenneth Skovhede
4911cfdaa4
Reworked AlphaFS and AlphaVSS to use pre-built versions targeting netstandard2.0 to avoid excessive warnings on build.
...
Still needs to include he native files.
2021-04-03 21:50:52 +02:00
Thomas Suckow
acea2fe10f
upstream
...
Update Telegram SharpAESCrypt dep
Update SystemIOWindows to split the difference
# Conflicts:
# BuildTools/AutoUpdateBuilder/AutoUpdateBuilder.csproj
# BuildTools/AutoUpdateBuilder/packages.config
# BuildTools/DependencyFinder/DependencyFinder.csproj
# BuildTools/DependencyFinder/packages.config
# BuildTools/GnupgSigningTool/GnupgSigningTool.csproj
# BuildTools/UpdateVersionStamp/UpdateVersionStamp.csproj
# BuildTools/UpdateVersionStamp/app.config
# Duplicati/CommandLine/BackendTester/Duplicati.CommandLine.BackendTester.csproj
# Duplicati/CommandLine/BackendTester/app.config
# Duplicati/CommandLine/BackendTool/Duplicati.CommandLine.BackendTool.csproj
# Duplicati/CommandLine/BackendTool/app.config
# Duplicati/CommandLine/ConfigurationImporter/Duplicati.CommandLine.ConfigurationImporter.csproj
# Duplicati/CommandLine/Duplicati.CommandLine.csproj
# Duplicati/CommandLine/RecoveryTool/Duplicati.CommandLine.RecoveryTool.csproj
# Duplicati/CommandLine/RecoveryTool/packages.config
# Duplicati/CommandLine/app.config
# Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
# Duplicati/GUI/Duplicati.GUI.TrayIcon/app.config
# Duplicati/GUI/Duplicati.GUI.TrayIcon/packages.config
# Duplicati/Library/AutoUpdater/Duplicati.Library.AutoUpdater.csproj
# Duplicati/Library/AutoUpdater/app.config
# Duplicati/Library/AutoUpdater/packages.config
# Duplicati/Library/Backend/AlternativeFTP/Duplicati.Library.Backend.AlternativeFTP.csproj
# Duplicati/Library/Backend/AlternativeFTP/app.config
# Duplicati/Library/Backend/AlternativeFTP/packages.config
# Duplicati/Library/Backend/AzureBlob/Duplicati.Library.Backend.AzureBlob.csproj
# Duplicati/Library/Backend/AzureBlob/packages.config
# Duplicati/Library/Backend/Backblaze/Duplicati.Library.Backend.Backblaze.csproj
# Duplicati/Library/Backend/Backblaze/packages.config
# Duplicati/Library/Backend/Box/Duplicati.Library.Backend.Box.csproj
# Duplicati/Library/Backend/Box/packages.config
# Duplicati/Library/Backend/CloudFiles/Duplicati.Library.Backend.CloudFiles.csproj
# Duplicati/Library/Backend/CloudFiles/app.config
# Duplicati/Library/Backend/Dropbox/Duplicati.Library.Backend.Dropbox.csproj
# Duplicati/Library/Backend/Dropbox/packages.config
# Duplicati/Library/Backend/FTP/Duplicati.Library.Backend.FTP.csproj
# Duplicati/Library/Backend/FTP/app.config
# Duplicati/Library/Backend/File/Duplicati.Library.Backend.File.csproj
# Duplicati/Library/Backend/File/app.config
# Duplicati/Library/Backend/GoogleServices/Duplicati.Library.Backend.GoogleServices.csproj
# Duplicati/Library/Backend/GoogleServices/packages.config
# Duplicati/Library/Backend/HubiC/Duplicati.Library.Backend.HubiC.csproj
# Duplicati/Library/Backend/Jottacloud/Duplicati.Library.Backend.Jottacloud.csproj
# Duplicati/Library/Backend/Mega/Duplicati.Library.Backend.Mega.csproj
# Duplicati/Library/Backend/Mega/packages.config
# Duplicati/Library/Backend/OAuthHelper/Duplicati.Library.OAuthHelper.csproj
# Duplicati/Library/Backend/OAuthHelper/packages.config
# Duplicati/Library/Backend/OneDrive/Duplicati.Library.Backend.OneDrive.csproj
# Duplicati/Library/Backend/OneDrive/packages.config
# Duplicati/Library/Backend/OpenStack/Duplicati.Library.Backend.OpenStack.csproj
# Duplicati/Library/Backend/OpenStack/packages.config
# Duplicati/Library/Backend/Rclone/Duplicati.Library.Backend.Rclone.csproj
# Duplicati/Library/Backend/Rclone/packages.config
# Duplicati/Library/Backend/S3/Duplicati.Library.Backend.S3.csproj
# Duplicati/Library/Backend/S3/app.config
# Duplicati/Library/Backend/S3/packages.config
# Duplicati/Library/Backend/SSHv2/Duplicati.Library.Backend.SSHv2.csproj
# Duplicati/Library/Backend/SSHv2/packages.config
# Duplicati/Library/Backend/SharePoint/Duplicati.Library.Backend.SharePoint.csproj
# Duplicati/Library/Backend/SharePoint/app.config
# Duplicati/Library/Backend/Sia/Duplicati.Library.Backend.Sia.csproj
# Duplicati/Library/Backend/Sia/packages.config
# Duplicati/Library/Backend/TahoeLAFS/Duplicati.Library.Backend.TahoeLAFS.csproj
# Duplicati/Library/Backend/TahoeLAFS/packages.config
# Duplicati/Library/Backend/Tardigrade/Duplicati.Library.Backend.Tardigrade.csproj
# Duplicati/Library/Backend/Tardigrade/packages.config
# Duplicati/Library/Backend/WEBDAV/Duplicati.Library.Backend.WEBDAV.csproj
# Duplicati/Library/Backend/WEBDAV/app.config
# Duplicati/Library/Common/Duplicati.Library.Common.csproj
# Duplicati/Library/Common/IO/SystemIOWindows.cs
# Duplicati/Library/Common/app.config
# Duplicati/Library/Common/packages.config
# Duplicati/Library/Compression/Duplicati.Library.Compression.csproj
# Duplicati/Library/Compression/app.config
# Duplicati/Library/Compression/packages.config
# Duplicati/Library/DynamicLoader/Duplicati.Library.DynamicLoader.csproj
# Duplicati/Library/DynamicLoader/app.config
# Duplicati/Library/Encryption/Duplicati.Library.Encryption.csproj
# Duplicati/Library/Encryption/packages.config
# Duplicati/Library/Interface/Duplicati.Library.Interface.csproj
# Duplicati/Library/Localization/Duplicati.Library.Localization.csproj
# Duplicati/Library/Localization/packages.config
# Duplicati/Library/Logging/Duplicati.Library.Logging.csproj
# Duplicati/Library/Logging/app.config
# Duplicati/Library/Main/Duplicati.Library.Main.csproj
# Duplicati/Library/Main/app.config
# Duplicati/Library/Main/packages.config
# Duplicati/Library/Modules/Builtin/Duplicati.Library.Modules.Builtin.csproj
# Duplicati/Library/Modules/Builtin/packages.config
# Duplicati/Library/SQLiteHelper/Duplicati.Library.SQLiteHelper.csproj
# Duplicati/Library/Snapshots/Duplicati.Library.Snapshots.csproj
# Duplicati/Library/Snapshots/app.config
# Duplicati/Library/Snapshots/packages.config
# Duplicati/Library/UsageReporter/Duplicati.Library.UsageReporter.csproj
# Duplicati/Library/UsageReporter/packages.config
# Duplicati/Library/Utility/Duplicati.Library.Utility.csproj
# Duplicati/Library/Utility/app.config
# Duplicati/Library/Utility/packages.config
# Duplicati/License/Duplicati.License.csproj
# Duplicati/Server/Duplicati.Server.Serialization/Duplicati.Server.Serialization.csproj
# Duplicati/Server/Duplicati.Server.Serialization/packages.config
# Duplicati/Server/Duplicati.Server.csproj
# Duplicati/Server/app.config
# Duplicati/Server/packages.config
# Duplicati/Service/Duplicati.Service.csproj
# Duplicati/Service/app.config
# Duplicati/Tools/Duplicati.Tools.csproj
# Duplicati/UnitTest/Duplicati.UnitTest.csproj
# Duplicati/UnitTest/RestoreHandlerTests.cs
# Duplicati/UnitTest/app.config
# Duplicati/UnitTest/packages.config
# Duplicati/WindowsService/App.config
# Duplicati/WindowsService/WindowsService.csproj
# Tools/SQLiteTool/App.config
# Tools/SQLiteTool/SQLiteTool.csproj
# thirdparty/TlsTest/TlsTest.csproj
# thirdparty/UnixSupport/UnixSupport.csproj
# thirdparty/mozroots/mozroots.csproj
2020-12-29 09:59:42 -08:00
Dean Ferreyra
2e777b2711
Change tests to work with long paths in Windows
...
Change SystemIOWindows.PathGetFullPath() to convert forward
slashes to backslashes.
Change Duplicati.UnitTest.BasicSetupHelper.ZipFileExtractToDirectory()
to rely on slash fix-ups.
2020-07-30 05:08:18 -07:00
Dean Ferreyra
73e31a79a1
Change tests to work with long paths in Windows
...
Even in .NET 4.6.2
`System.IO.Compression.ZipFile.ExtractToDirectory()` cannot handle
long paths. Replace call to
`System.IO.Compression.ZipFile.ExtractToDirectory()` with an
equivalent that extracts files to a temporary location and uses I/O
functions that support long paths to move them to their final
location.
In CommandLineOperationsTests.cs, use ISystemIO functions to handle
potentially long paths.
Add a fix to RecoveryTool for long paths that was missed by #4258 .
This fixes #3863 .
2020-07-28 05:51:53 -07:00
Dean Ferreyra
d154702020
Support problematic Windows paths
...
Fix pull request string comparisons in SystemIOWindows.cs to use
StringComparison.Ordinal.
Fix pull request to use SystemIO.IO_WIN.PathCombine() in
WindowsSnapshot.cs.
2020-07-19 16:24:51 -07:00
Dean Ferreyra
6acbbf2136
Support problematic Windows paths
...
Allow historically problematic Windows paths (i.e., files or
directories that end in a dot or a space) to be backed up with
Duplicati in Windows.
This fixes #3839 .
2020-07-17 21:50:29 -07:00
Max
c882953fdd
upstream
2020-05-31 13:50:13 +02:00
Kenneth Hsu
1249267f6e
Remove unused members from Duplicati.Library.Common.
2020-04-05 14:36:28 -07:00
Rod Savard
c247d01c6e
remove spaces
2020-03-18 04:57:25 -07:00
Rod Savard
b30fdfe34d
add comment and simplify key value assignment
2020-03-17 21:35:19 -07:00
Rod Savard
4c41fd691a
only store inheritance breaks in metadata when true
2020-03-17 06:48:00 -07:00