duplicati/Duplicati/Library/Main
Kenneth Skovhede 3b695cf065 Added support for Photos on MacOS
This PR adds detection of the MacOS Photos folder, and intercepts reads and replaces them with PhotoKit calls.
With this, it is possible to make backups of all MacOS Photos, even if they are not stored locally.

The previous versions would just make a backup of the on-disk structure, which was not guaranteed to contain all photos, but instead has various indexing for finding photos, and may contain some original photos.

The option `--photos-handling` controls how Duplicati now deals with the Photos folder. The options are:
- `LibraryOnly`: Same as before, just treat it as a folder
- `PhotosOnly`: Ignore the folder contents and just back up the actual photos
- `PhotosAndLibrary` (default): Make a backup of the photos and the library on-disk. This may cause images to be stored twice, but de-duplication will usually limit the storage increase.

The option `--photos-library-path` can be used to point to the on-disk Photo library that should be handled, in case the auto-detection does not pick it up. If this does not point to a valid Photoslibrary, or the path is not being backed up, no special handling will be done.

Note that the restore is not restoring into Photos itself, but instead restores into a sub-folder in the Photolibrary that is called `dup_backup`. To get the photos out after a restore, one needs to right-click the Photolibrary folder, and choose "Show package contents" and then the `dup_backup` folder is revealed.

This is done to keep all photos in the same folder, but avoid messing with the structure of the on-disk Photolibrary.

A future update could allow restoring back into Photos, and metadata is captured for each image to eventually allow this.

This fixes #6381
2025-11-17 17:12:10 +01:00
..
Backend Add dynamic streaming toggle 2025-11-03 12:48:37 +01:00
Database Merge pull request #6625 from duplicati/bugfix/restore-deadlock-timer-better-start 2025-11-15 11:04:25 +01:00
Operation Added support for Photos on MacOS 2025-11-17 17:12:10 +01:00
Volumes Forwarded cancellation tokens, added some missing .ConfigureAwait() and added some missing docstrings 2025-06-19 11:04:09 +02:00
Blockprocessor.cs Feature/update license 2025 (#5851) 2025-01-07 09:40:39 +01:00
CLIDatabaseLocator.cs Fixed compile warnings 2025-08-07 08:06:24 +02:00
Controller.cs Revert "Reverted flag to be allow-empty-source so the check is on by default." 2025-08-15 11:01:34 +02:00
ControllerMultiLogTarget.cs Fixed nullability warnings 2025-05-23 11:46:37 +02:00
default_compressed_extensions.txt Add a few more compressed, audio, and video exclusions 2022-09-06 14:52:51 -07:00
Duplicati.Library.Main.csproj Updated to .NET10 2025-11-14 15:05:39 +01:00
Enums.cs Implemented 4 new list methods that are optimized for a single operation 2025-04-29 10:03:57 +02:00
IBackendManager.cs Minor cleanup 2025-08-08 20:10:03 +02:00
IMetahash.cs Minor cleanup 2025-08-08 20:10:03 +02:00
LocaleChange.cs Feature/update license 2025 (#5851) 2025-01-07 09:40:39 +01:00
NetworkTrafficLogger.cs Add option to log HTTP and socket requests 2025-08-08 19:18:30 +02:00
OperationPhase.cs Faster progress update 2025-07-08 14:20:06 +02:00
Options.cs Added support for Photos on MacOS 2025-11-17 17:12:10 +01:00
ProcessController.cs Fixed an issue with sleep prevention giving warnings in rare cases 2025-04-03 17:16:12 +02:00
ProgressClasses.cs Fixed an issue with retry downloads causing errors 2025-05-28 12:49:29 +02:00
ResultClasses.cs Merge branch 'master' into performance/mssqlite-async 2025-06-24 14:24:09 +02:00
SecretProviderHelper.cs Improve secret matching 2025-06-10 09:40:35 +02:00
Strings.cs Added support for Photos on MacOS 2025-11-17 17:12:10 +01:00
Utility.cs Updated all of the handler calls to database methods to forward their cancellation token 2025-06-19 09:47:33 +02:00