mirror of
https://github.com/immich-app/immich.git
synced 2026-07-16 05:34:30 +03:00
Preserve directory structure on backup #18
Closed
opened 2026-02-04 16:32:25 +03:00 by OVERLORD
·
18 comments
No Branch/Tag Specified
main
chore/translations
renovate/typescript-projects
fix/29853-thumbnail-decode-size
custom-app-logo
fix/server-heif-security-limit
fix/live-photo-library-task-joining
renovate/machine-learning
chore/security-txt-ghsa
renovate/mobile
refactor/auto-trash-sync
fix/failed-sync-blocks-resume
renovate/pigeon-27.x
fix/slideshow-motion
renovate/typescript-7.x
renovate/eslint-plugin-unicorn-71.x
fix/ws-reconnect-battery
renovate/node
chore/pump-flutter
feat/ml-hwaccel-testing
chore/face-cluster-abstraction
feat/workflow-logs
fix/moved-files-not-backed-up
renovate/java-25.x
renovate/@immichui
renovate/node-24.x
renovate/terragrunt-1.x
renovate/opentofu-1.x
renovate/cloudflare-4.x
renovate/java-21.x
renovate/prom-prometheus
fix/ios-extension
feat/server-chunked-uploads
feat/native-core
feat/upload-action
fix-29727
feat/download-tag-action
feat/share-action
refactor/action-secondary-handler
feat/edit-button-action
feat/delete-action
feat/album-actions
chore/deprecate-ios-14
fix/android-cr3-save
fix/library-map-live-bounds-updates
fix/mobile-add-to-album-error
feat/browser-profile-action
feat/cast-slideshow-action
chore/update-maplibre-0.26.2
feat/locked-folder-action
fix/unauthorized-memory-creation
feat/workflow-exif-filter
renovate/eslint-plugin-unicorn-70.x
fix/android-locked-folder-delete
fix/library-map-loading-flash
feat/context-actions
renovate/grafana-monorepo
fix/mobile-scroll-velocity-placeholders
renovate/sharp
refactor/action-class
feat/memories-view
refactor/asset-action-filter
feat/undo-archive
feat/archive-action
feat/stack-action
feat/more-favorite-action
feat/restore-action
refactor/feedback-repository
refactor/asset-service-update
refactor/owned-iterator
fix/birthday-picker-locale-order
fix/viewer-double-close-anim
feat/mobile-hls-player
refactor/stack-actions
renovate/permission_handler-12.x
fix/kebab-action-color
feat/workflow-asset-tags
fix/viewer-long-image-aspect
fix/ios-memory-widget-local-date
fix/timeline-drag-select-stops
fix/ios-ethernet-unmetered
fix/featured-photo-thumbnail-cache
feat/yucca-integration
fix/album-timeline-date-ordering
chore/cancel-native-op-on-lifecycle
chore/album-remove-assets
feat/partner-table-permissions
fix/ocr-after-edit
fix/re-enable-pruning
refactor/delete-restore-actions
apk-build-deployment
renovate/pypi-pydantic-settings-vulnerability
edit-photo-stacking
fix/mise-lockfile
fix/android-local-album-date
feat/web-hls-hover
chore/pump-drift
refactor/android-background-worker
refactor/store-cleanup
fix/hash-mismatch
debug/throttle-timeline
refactor/app-metadata
refactor/advanced-settings
refactor/current-user
fix/dedupe-integrity-missing-paths
chore/albums-select
feat/album-assets-event
fix/fdroid-meta
refactor/per-asset-backup-flag
fix/av1-threads
fix/pass-secrets
fix/download-progress-stuck
fix/negative-backup-remainder
feat/map-asset-number
feat/custom-date-range
renovate/pep621-lock-file-maintenance-machine-learning
refactor/session-repository
test-bump-prerelease
fix/handle-unlinking-motion-photos
refactor/cached-key-value-repo
fix/date-range-formatting
fix/map-unresponsive
fix/mobile-album-action-msg
refactor/search-v3/pr-1
chore/v7.23.0-openapi-generator
asset-add-to-album-trigger
refactor/face-editor-decoupling
feat/zoom-aware-face-editing
refactor/adaptive-image-dimensions
fix-face-editor-video-preview
fix-stack-face-tag-selection
fix/face-boxes-edit-panel
workflow-webhook-step
feat/hero_view_transitions
fix/map-sidepanel-queries
feat/dart-openapi-generator
claude/share-quality-5d7Gn
drag-drop-ghost-target
refactor/workflow-page
refactor/mobile-upload
fix-scroll-flicker-2
test/2.7.5-new-sign
update-mise-lock-file
feat/kysely-0.29
feature/load-previews
release-candidate-flow-1
fix/mobile-22522-sqlite-2067
fix/job-lock
release-candidate-flow-3
release-candidate-flow-2
show-in-timeline-toggle
fix/mise-windows
fix/mobile-album-sync-stale-cache
plan-local-image-display
fix/remote-thumbnail-fallback
bugfix/live-photo-stuck
chore/riverpod-update
album-order-per-user
fix/web-timeline-dom-node-retention
chore/svelte-enable-state-referenced-locally
feat/favorite-albums
feat/patch-release-from-branch
fix/oauth-linking
feat/timeline_scroll_buffer
panorama-face-overlay
push-txxyuusptoru
push-zpwsovysllvn
chore/queue-endpoint-migration
fix/remove-from-album
chore/thumbnail-histogram
fix/video-thumbnail-bindthis-regression
fix/scrubber-drag-edge-cases
fix/timeline_layout_row_height
refactor-cancellable-task
uhthomas/fix-mobile-use-timer
uhthomas/fix-mobile-video-controls-key
uhthomas/chore-mobile-search-declarative
owner-role-album-user
feat/livephoto-editing
favorite-albums
uhthomas/fix-mobile-isolate-auth
fix/library-watcher-excludes
chore/library-e2e-to-medium
push-ynllunsvrpxy
fix/dont-delete-offline-library-files
push-zvwwxmvkrspv
push-kywsnvvkwzts
push-xxnxokokzrou
push-voozlrlkxsnu
view-in-timeline-transition
push-uymvmlknxpmx
push-qslzsplnusoz
fix/mobile-video-stall
uhthomas/draft-mobile-image-cache-cancel
push-yquostpqnkxp
feat/vitest-4
claude/offload-icloud-hashing-bI3GZ
midzelis/wip
uhthomas/fix-server-fsync-all
feat/mobile-widget-shared-client
push-lnyuzsutzkqq
push-vqqqxxvkunru
push-wvnmqoswptww
push-nwxlpmyzkyrl
fix/map-webgl-error
fix/mobile-player-fit
feat/panorama-tiles
csp-policy
push-rsywxvptwxuv
refactor/restores-file-interceptor
postgres-socketio
claude/auto-screenshot-web-changes-Y7efI
visual-review/pr-26535
push-lvyturrtwkrq
feat/library-offline-count
fix/mobile-video-aspect-ratio
uhthomas/fix-mobile-search-results
uhthomas/feat-sort-smart-search
uhthomas/chore-mobile-maplibre
uhthomas/mobile-fix-asset-details-album-pop
feat/crawl-wrapper
push-skvzqoozqkpl
feat/edit-filters
feat/pg-queue
refactor/asset-upload
better-project-structure
uhthomas/mobile-feat-asset-viewer-details
fix/ml-rocm-build
feat/asset-file-apis
feature/bottom-buttons-order
sqlite_thumbs
fix-keep-correct-ios-shared-album-asset
push-vpxwmwwxwnvw
fix-migration-width-height
shared-deep-link-handler
feat/thumbnail-native-clients
feat/platform-clients
fix/foreground-cloud-sync
filter-by-person
refactor/sidebar
fix/merged-edited-assets
feat/create-job-with-dto
feat/ios-fastlane-match
match-signing
fix-update-time-update-timeline
feat/modal-routes
feature/mobile-view-asset-owner
feat/system-settings
feature/show-activity-count
feat/location-favorites
feature/rearrange-buttons-2
fix/download-storage-template
chore/originals-in-asset-files
ben/tree-a11y
new-search-filter-ui
refactor/expectSelectedReadonly
refactor/mobile-grdb
feat/mobile-native-local-sync
refactor/timeline_ops
fix/scrubber_end
refactor/virtualsegment
refactor/rename_daymonth_groups
fix-remote-sync-clean-up
debug/cf-chunked-uploads
feat/search-filter-album/web
feat/session-permissions
feat/mobile-dynamic-thumbnails
refactor/extract_photostream
refactor/rename_load_api
refactor/timeline2
refactor/timeline3
feat-no-thumbhash-cache
feat/mobile-hdr-images
feat/beta-background-upload
fix/beta-timeline-memories-setting
fix/failed-uploads-not-removed
feat/groups
drift-map-page
feat/add-to-album-action
track-livephotos
feat/maintenance-worker
refactor/server-side-dedupe
feat/integrity-checks
dev/recognition-eval
lighter_buckets_test
perf/postgres-queue
tmp/demo-snapshot-preview
fix/server-migration-file-extension
rknn-toolkit-lite2
feature/Add-rocm-support-for-machine-learning
chore/async-hash-file
feat/shared-link-view-count
feat/graphql
no-video-player
fix/server-qsv-output-format
chore/server-geodata-tweaks
mobile/native-video-player-no-hero
feat/local-tileserver
feat/ml-armnn-conversion
chore/handle-output_dims
feat/capacitor-mobile-app-poc
feat/server-nvenc-hw-decoding
web/automation-ui
object-storage
ml/tflite
feat/ml-export-cli
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v3.0.0-rc.4
v3.0.0-rc.3
v3.0.0-rc.2
v3.0.0-rc.1
v3.0.0-rc.0
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.1
v2.4.0
v2.3.1
v2.3.0
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.0
v2.0.1
v2.0.0
v1.144.1
v1.144.0
v1.143.1
v1.143.0
v1.142.1
v1.142.0
v1.141.1
v1.141.0
v1.140.1
v1.140.0
v1.139.4
v1.139.3
v1.139.2
v1.139.1
v1.139.0
v1.138.1
v1.138.0
v1.137.3
v1.137.2
v1.137.1
v1.137.0
v1.136.0
v1.135.3
v1.135.2
v1.135.1
v1.135.0
v1.134.0
v1.133.1
v1.133.0
v1.132.3
v1.132.2
v1.132.1
v1.132.0
v1.131.3
v1.131.2
v1.131.1
v1.131.0
v1.130.3
v1.130.2
v1.130.1
v1.130.0
v1.129.0
v1.128.0
v1.127.0
v1.126.1
v1.126.0
v1.125.7
v1.125.6
v1.125.5
v1.125.4
v1.125.3
v1.125.2
v1.125.1
v1.125.0
v1.124.2
v1.124.1
v1.124.0
v1.123.0
v1.122.3
v1.122.2
v1.122.1
v1.122.0
v1.121.0
v1.120.2
v1.120.1
v1.120.0
v1.119.1
v1.119.0
v1.118.2
v1.118.1
v1.118.0
v1.117.0
v1.116.2
v1.116.1
v1.116.0
v1.115.0
v1.114.0
v1.113.1
v1.113.0
v1.112.1
v1.112.0
v1.111.0
v1.110.0
v1.109.2
v1.109.1
v1.109.0
v1.108.0
v1.107.2
v1.107.1
v1.107.0
v1.106.4
v1.106.3
v1.106.2
v1.106.1
v1.106.0
v1.105.1
v1.105.0
v1.104.0
v1.103.1
v1.103.0
v1.102.3
v1.102.2
v1.102.1
v1.102.0
v1.101.0
v1.100.0
v1.99.0
v1.98.2
v1.98.1
v1.98.0
v1.97.0
v1.96.0
v1.95.1
v1.95.0
v1.94.1
v1.94.0
v1.93.3
v1.93.2
v1.93.1
v1.93.0
v1.92.1
v1.92.0
v1.91.4
v1.91.3
v1.91.2
v1.91.1
v1.91.0
v1.90.2
v1.90.1
v1.90.0
v1.89.0
v1.88.2
v1.88.1
v1.88.0
v1.87.0
v1.86.0
v1.85.0
v1.84.0
v1.83.0
v1.82.1
v1.82.0
v1.81.1
v1.81.0
v1.80.0
v1.79.1
v1.79.0
v1.78.1
v1.78.0
v1.77.0
v1.76.1
v1.76.0
v1.75.2
v1.75.1
v1.75.0
v1.74.0
v1.73.0
v1.72.2
v1.72.1
v1.72.0
v1.71.0
v1.70.0
v1.69.0
v1.68.0
v1.67.2
v1.67.1
v1.67.0
v1.66.1
v1.66.0
v1.65.0
v1.64.0
v1.63.2
v1.63.1
v1.63.0
v1.62.1
v1.62.0
v1.61.0
v1.60.0
v1.59.1
v1.59.0
v1.58.0
v1.57.1
v1.57.0
v1.56.2
v1.56.1
v1.56.0
v1.55.1
v1.55.0
v1.54.1
v1.54.0
v1.53.0
v1.52.1
v1.52.0
v1.51.2
v1.51.1
v1.51.0
v1.50.1
v1.50.0
v1.49.0
v1.48.1
v1.48.0
v1.47.3
v1.47.2
v1.47.1
v1.47.0
v1.46.1
v1.46.0
v1.45.0
v1.44.0
v1.43.1
v1.43.0
v1.42.0_65-dev
v1.41.1_64-dev
v1.41.0_64-dev
v1.40.1_63-dev
v1.40.0_63-dev
v1.39.0_61-dev
v1.38.2_60-dev
v1.38.1_60-dev
v1.38.0_60-dev
v1.37.0_58-dev
v1.36.2_56-dev
v1.36.1_55-dev
v1.36.0_55-dev
v1.35.0_54-dev
v1.34.0_53-dev
v1.33.1_52-dev
v1.33.0_52-dev
v1.32.1_51-dev
v1.32.0_50-dev
v1.31.1_49-dev
v1.31.0_49-dev
v1.30.2_48-dev
v1.30.0_46-dev
v1.29.6_45-dev
v1.29.6_44-dev
v1.29.5_44-dev
v1.29.4_44-dev
v1.29.3_43-dev
v1.29.2_43-dev
v1.29.1_43-dev
v1.29.0_42-dev
v1.28.4_41-dev
v1.28.4_42-dev
v1.28.3_41-dev
v1.28.2_40-dev
v1.28.1_39-dev
v1.28.0_38-dev
v1.27.0_37-dev
v1.26.0_36-dev
v1.25.0_35-dev
v1.24.0_34-dev
v1.23.0_33-dev
v1.22.0_32-dev
v1.21.1_31-dev
v1.21.0_31-dev
v1.20.3_30-dev
v1.20.2_30-dev
v1.20.1_30-dev
v1.20.0_30-dev
v1.19.1_29-dev
v1.19.0_29-dev
v1.18.0_27-dev
v1.17.0_25-dev
v1.16.0_23-dev
v1.15.1_21-dev
v1.15.0_21-dev
v1.14.0_21-dev
v1.13.0_20-dev
v1.12.0_18-dev
v1.11.0_17-dev
v1.10.0_15-dev
v1.9.1_14-dev
v1.9.0_13-dev
v1.8.0_12-dev
v1.7.0_11-dev
v1.6.0_10-dev
v1.5.1+9-dev
v1.5.0+8-dev
v1.4.0+7-dev
v1.4.0+6-dev
v1.4.0-dev
v1.3.0-dev
v1.3.1-dev
v0.6-dev
v0.5-dev
v0.4-dev
v0.3-dev
v0.2-dev
first-android-release
Labels
Clear labels
accessibility
changelog:enhancement
changelog:security
changelog:skip
changelog:translation
cli
date-time
dependencies
documentation
external-library
format
good first issue
mobile-beta
mobile-beta
mobile-beta
needs-answer
nice to have
pull-request
sharing
tech-debt
📱mobile
🖥️web
🗄️server
🧠machine-learning
Mirrored from GitHub Pull Request
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: immich-app/immich#18
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @ilkersigirci on GitHub (Mar 5, 2022).
Could you implement the backup mechanism to preserve folder structure?
-Consider I have DCIM/Camera and Pictures/Telegram folders in the phone.
-When doing backup, in the remote server, these photos are located as merged folder with random name like $UPLOAD_DIR/0268595a-45c0-4d09-af89-70ecb56b3c63/original/....
-But I want them to be same as the folder structure in my phone.
-With this way, one can easily identify photos with their appropriate folder names.
@comfreak89 commented on GitHub (Mar 30, 2022):
Yeah, its quite confusing when all photos are in the same folder - inclusive Telegram, Whatsapp, etc...
@jbaez commented on GitHub (May 7, 2022):
I think albums #147 could be an alternative to replicating the folder structure in the server. That way from the client app, the photos can be organized in albums. Also, now that the "selective folders backup" feature has been implemented #137, there is no need of uploading all folders from the device.
@Atemu commented on GitHub (May 8, 2022):
I'd also prefer if the file names were preserved.
Perhaps the files could be stored in
$UUID/$FILENAME; i.e.original/80c75488857f94b5256f249925f73d5338f450db20c7fdd9f16f123e6dde9da0/08245964-3349-4469-a2f5-1d0e49122d94/actual-filename.jpg@Savasdotexe commented on GitHub (May 11, 2022):
With respects to what you'd like, I think an album is not the same or sufficient to "replicating" what the user here has asked for, which is preserving the folder structure, which I agree and I am a little surprised it doesn't do because the whole point of a backup is to restore and you can't do that if it's all changed.
An album can be created from videos/photos from various cameras and someone may prefer to have folders based on the source the photo/video was taken. So for example content from a digital camera and a smartphone camera are in two different directories, one can create an album from those, and tags can be based on subjects within the photo or video. When people start mixing up these structures, it kind of defeats the purpose.
@alextran1502 commented on GitHub (May 11, 2022):
@Savasdotexe I agree with you. I've put more thought into this after the implementation of the selective backup features.
Since I can pull information from the asset's original folder from the mobile phone, it will also be nice to have them in the same structure on the server after backing up.
@jbaez commented on GitHub (May 11, 2022):
🤔 Interesting point, but I see some issues with it.
For example, for uploading photos taken with a camera, that would need to be done from a future Web app, where you select photos from the file system to upload. In this case there is no "folder structure". The only way to have a folder structure would be to implement a Dropbox-like client to install in the computer (huge project on it's own, and Nextcloud already does this and it's great 😄), or to manually enter a folder destination when uploading.
The way I see the "backup" feature, is to have the photos from some folders in the phone backed up in case you lose the phone or your phone breaks. I'm not sure a feature to restore photos/videos to the original location in the phone would be a useful feature.
Another possible issue is having 2 mobile phones with the same folder structure. That would cause having a single folder structure for both devices with additional chance of name collision (if file names are also preserved)
I would normally have only my phone camera folder as auto-backup, and then maybe manually add a photo from WhatsApp (for example). This scenario is similar to the first example, I'm not sure you could get the folder structure in a "selected photos" context, and if it is possible, I think it might be unnecessary to create WhatsApp folder with those selected photos in the server.
I think the way the photos are organized in the server should be simple, performant and scalable. At the end of the day although the uploaded photos folder can be in a Docker bind mount to some folder in the NAS / Server (which would probably benefit from some folder structure) the normal way of using it in "production" would be having a Docker volume mount (more performance) or a Kubernetes volume (if running in K8), so the folder structure would not be easily accesible anyway.
Although a single folder would be "mixing up" photos from different devices, each photo should have metadata with its original name, camera used for taking the photo, etc. which could be used for filtering if needed.
Finally, I think one essential thing to have, is an export feature. This could export all the photos using the albums as folder structure and preserving the original names (like you would get by using Google export), so at least the organization done in the app using albums is not lost and you don't end up with a single folder with random photo names 😄
@Savasdotexe commented on GitHub (May 12, 2022):
Well, those aren't really issues to what I said, besides a lot of external cameras sync with phones and tablets now days so they would still be using the same device.
Lets say you go on holiday, you takes pictures with your phone camera, your gopro and also digital camera (which both syncs photos/videos with the phone) and you also receives photos from a friend which went with you, via WhatsApp. You obviously would want a way to distinguish it from the others photos/videos and easily access it, so you would ideally create an album and lets say "Holiday trip 05/2022" and mark all those pictures into the album. You shouldn't be messing around with moving files, secondly if you did then WhatsApp app will not be able to locate the media files. Other applications may also have trouble finding its photos if it's not in the respected directories again. If you create copies then you're wasting storage.
Lets say something happens to your phone, but you had to factory reset losing all your videos/photos. The difference between folders and albums is evident here. All your photos are in the respected folders, an album is a collection for easy access. You could use albums to mimic folders, but it's just an extra step and misusing the term, plus upon restore potentially adding more work.
The whole point of a backup is to potentially restore it exactly where it was so if you think it's not useful to do that, you're kind of missing the point. This is kind of unrelated to the topic here, but to answer you I presume that choice could be presented when you come to restore.
People prefer seamless operation, so backing up everything as you go is the way to go and having the user take steps to do this while it should be default is a bad call.
Definitely a solvable issue.
@spupuz commented on GitHub (May 31, 2022):
If having too many pictures in the same folder could lead to have problem ok listing them. Need to backup pic in year / month / day folder structure
@Tschuuuls commented on GitHub (Jun 23, 2022):
Photo Sync does exactly this. Creates a Folder with device name, then subfolders for all the "Albums" on iOS/Folders on Android. It also preserves original Filenames.
This behavior is pretty neat if you ever need to manually go in and look for a photo on an SMB share for example.
Would be awesome, if Immich could work with those backups :)
@ggantn commented on GitHub (Oct 1, 2022):
+1 for me.
@ADIX7 commented on GitHub (Oct 11, 2022):
What about imageName from exif table and the current UUID? So something like originalName-UUID.originalExt for file name. Names collisions cant happen and every data is present currently so migration is not that hard.
Currently browsing is immich backup directory with samba/sftp/etc is not so convenient because the files are in a totally random order. Most phones and cameras put date and time to file names so they are order. Using only UUID in file names puts them in a random order. By using originalName-UUID format they would be mostly in date order and would be much more searchable.
@alextran1502 commented on GitHub (Oct 11, 2022):
@ADIX7 I like your suggestion
@Atemu commented on GitHub (Oct 12, 2022):
I also like it.
One thing to keep in mind is that a UUID string in the file name could make it long enough to cause issues on some platforms, some apps or file systems (namely Windows) under some circumstances.
This is an issues systems that use strong hashes in file names sometimes face. UUIDs are probably mostly fine but just something to keep in mind.
@mammo0 commented on GitHub (Oct 26, 2022):
What about the suggestion of @Tschuuuls?
At the same time the feature request from #537 can be implemented, so a virtual album in Immich is also created.
My suggestion for the directory structure for uploaded photos from mobile devices:
I know that this does not preserve the original path like it's on the mobile device. But it's still human readable if you need to access the files directly e.g. via SMB.
But how should files be handled that were uploaded via the CLI tool or the web interface? My suggestion:
a new album
an existing album
<path-to-existing-album>: Can also be the directory of another user if it's a shared album and the current user as write permissions on it.<upload-identifier>: Normally the (UTC) timestamp of the upload should be sufficient here. But if an user uploads something to an existing album of another user, the username of the uploader should be added:<upload-timestamp>-<immich-uploader-username>I don't know if a user can currently define an album to which the photos should be added after the upload.
I currently see two problems with my suggestion:
At least for Windows 10 there's a solution: https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation
Pleas let me know your thoughts on this.
@klaus1k commented on GitHub (Dec 18, 2022):
Hey,
hope this is the right issue, didn't find a dedicated one on file names: I would love to have the photos backed up as they are - e.g. having their original filename preserved.
This would be perfect for my use case:
<immich-assets-dir>/<immich-username>/upload/<original-file-name>Is anything planned on this?
P.S. Love the project!
@alextran1502 commented on GitHub (Dec 18, 2022):
@klaus1k Yes, the feature just got implemented https://github.com/immich-app/immich/pull/1098 it will be available on next release
@klaus1k commented on GitHub (Dec 18, 2022):
Awesome, thanks!
@ilkersigirci commented on GitHub (Dec 20, 2022):
Thank you for this update. Just awesome. Now can use immich as my main cloud photo storage for all my devices.