# Azalea (en) Back up camera-roll originals to your own COS, OSS, S3, USB disk, or NAS. Apps: iOS / Android / macOS. Site: https://photos.duguying.net/en - Download: https://photos.duguying.net/en/download - FAQ: https://photos.duguying.net/en/faq - Privacy: https://photos.duguying.net/en/privacy - About: https://photos.duguying.net/en/about ## Guides - Android original-quality auto backup: https://photos.duguying.net/en/guides/android-photo-auto-backup Grant Azalea photo permission (READ_MEDIA_IMAGES / VIDEO on API 33+), add COS/OSS/S3 or a USB document tree, and enable auto backup. Background work is WorkManager plus a foreground notification. The OS can still kill it; reopening continues from backup-index.sqlite. Do not use “selected photos” for a whole-library copy. - Move an Android camera roll onto an iPhone: https://photos.duguying.net/en/guides/android-to-iphone-photos Run Azalea to completion on the Pixel, Xiaomi, or Huawei. Add the same profile on the iPhone and claim. 2 Apr 2026: Pixel 8 to iPhone 16, 11,614 items, 81.95 GB through a bucket. Google switch tools use their cloud; quality and motion-photo semantics change. After the claim the iOS camera roll stays empty until you download. - When 4K video fills the phone, back that up first: https://photos.duguying.net/en/guides/backup-4k-video-first If the phone is full, let Azalea finish the video queue, spot-check, then delete those clips on the phone. Lab 4K clips averaged 56–90 MB; HEIC stills about 3 MB. The 18,432-item USB job only averaged 5.7 MB/s because of small files. Clearing video moves the Settings storage number sooner. - Backup iPhone photos without iCloud: https://photos.duguying.net/en/guides/backup-iphone-photos Install Azalea, grant full Photos access, create a storage profile for S3 or a USB folder, and let automatic backup run. Originals leave the phone for media you control. They never pass through an Azalea server. You can leave iCloud Photos on until the copy is checked; do not let both sides delete locals at once. - Backup the camera roll to a USB drive: https://photos.duguying.net/en/guides/backup-photos-to-usb Format the disk exFAT and plug it in. On iOS, pick a folder in Azalea so a bookmark is stored. On Android, grant a document tree and persist it. Enable auto backup. Unplugging pauses; replugging resumes from the index. A folder inside iCloud Drive is not a USB disk. - Claim the same portable disk on a second phone: https://photos.duguying.net/en/guides/claim-library-on-hard-drive After the first phone finishes, the second phone picks the same folder (or discovers the existing library on the volume). iOS uses a volume UUID when two disks are both named Backup. Android must re-grant a tree if the URI changes. The lawyer setup wrote the same T7 from an iPhone 16 Pro and a Pixel 8a. - Offload originals after a backup you have actually opened: https://photos.duguying.net/en/guides/free-space-after-backup When the backup is done, use iOS Optimize iPhone Storage or delete Android copies you have verified on the destination. Azalea has no “delete locally, keep in our cloud” button because there is no our-cloud. The second copy has to be on your disk or bucket. If the check failed, do not offload. - iPhone storage full — keep the photos: https://photos.duguying.net/en/guides/iphone-storage-full-photos Do not start in Photos with Select and Delete. Back up with Azalea to a disk or a bucket until pending is 0, open a few originals, then enable Optimize iPhone Storage or delete only videos you have seen on the destination. Azalea will not flip that iOS switch for you. - Transfer photos from iPhone to Android without a computer dump: https://photos.duguying.net/en/guides/iphone-to-android-photos Run Azalea on the iPhone until pending is 0. On Android, add the exact same storage profile and claim. The shuttle can be S3 or a portable disk. Apple’s iCloud export flattens the timeline and mishandles Live Photos. After the claim, the Android camera roll may still be empty; the assets live in the backed-up library. - Back up the camera roll to a NAS over Samba: https://photos.duguying.net/en/guides/nas-samba-phone-photos Create a dedicated NAS user and share. In Azalea choose Samba, prefer an IP for the host, and put the share name in the bucket field. Do not use guest unless the server allows empty passwords. Two phones on Synology DSM 7 reproduced 15,767 items. The app does not show free space; a full volume errors on write. - Original quality versus Optimize iPhone Storage: https://photos.duguying.net/en/guides/original-vs-optimized-backup Azalea writes the library assets (HEIC, DNG, 4K) without a storage-saver re-encode. Optimize iPhone Storage shrinks the Photos line in Settings by parking originals in iCloud. Backup first. After the March 2026 USB run, enabling Optimize dropped on-phone Photos from 88.1 GB to 41.6 GB; the disk library stayed 86.41 GB. - Switch-day photo checklist (and how to roll back): https://photos.duguying.net/en/guides/phone-switch-photo-checklist Old phone pending 0 → spot-check twenty items including video → new phone, same profile, claim → counts and bytes match → do not wipe the old phone yet. If the claim is empty after ten minutes, check the disk, the region, and whether you created a second profile. Rollback is “keep using the old phone”; the disk and bucket are still there. ## Lab cases - 214.7 GB: a year of S3 versus one USB disk: https://photos.duguying.net/en/cases/case-cos-vs-usb-cost Costed a real 230,511,861,760-byte (214.7 GB) library. S3 Standard us-east-1 at $0.023/GB-month × 12 ≈ $59.26. PUT fees at list rates are cents. WD Elements 1 TB was $54.99 on Amazon US that day. Year-one disk wins on cash; year-three disk usually wins; object storage wins when the phone is not at home. - Two phones, one Synology share, DSM 7: https://photos.duguying.net/en/cases/case-family-nas Synology DS220+ DSM 7.2.2, share name photos, SMB3, wired 1 GbE to the NAS. iPhone 14 Pro wrote 9,023 items (~41.2 GB), Xiaomi 14 wrote 6,744 (~28.7 GB). Both can list the same library. Four failures were idle session drops, not a full volume. - Huawei Mate 60 OTG to a 1 TB stick, unplugged at 61%: https://photos.duguying.net/en/cases/case-huawei-otg-sandisk Mate 60 plus a SanDisk Ultra Dual Drive Luxe 1 TB over OTG, after a SAF grant: 8,241 stills, 118 videos, 39,347,971,686 bytes (36.64 GB) in 188 minutes, 3.32 MB/s. Unplugged at about 61 percent (DeviceDetached). Replug resumed; twelve temp files were dropped and rewritten; nothing lost. - iPhone 15 256 GB, iCloud full, 86.4 GB onto a 1 TB disk: https://photos.duguying.net/en/cases/case-iphone15-256g-icloud-man On an iPhone 15 with iCloud Photos full and 241.3 GB used, Azalea wrote 17,891 stills and 541 videos to a SanDisk Extreme 1 TB disk. 92,778,479,616 bytes (86.41 GB) in 257 minutes, 5.72 MB/s. Twenty-three items failed because of colons in names; all retried after escaping. - Pixel 8 to iPhone 16 through a bucket, 11,614 items: https://photos.duguying.net/en/cases/case-pixel-to-iphone A Pixel 8 on Android 15 backed up 11,208 stills and 406 videos to S3 Standard us-west-2. An iPhone 16 claimed the same bucket. 87,973,142,579 bytes (81.95 GB) over two nights, 2.10 MB/s average. One leftover broken MP4 failed the hash check and stayed unrecoverable. - No public cloud at all: a T7 disk in a lawyer setup: https://photos.duguying.net/en/cases/case-privacy-no-cloud With iCloud Photos and Google Photos backup off, only a Samsung T7 Shield 2 TB was used. Two phones wrote 5,987 stills and 425 videos, 34,142,945,280 bytes (31.80 GB) in 96 minutes, 5.64 MB/s. The object-storage form stayed empty. Two failures were a loose cable. ## Compare - Copying DCIM to a computer is not a backup system: https://photos.duguying.net/en/compare/dcim-copy Dragging DCIM onto a computer works once. The next time you either copy everything again or you diff dates by hand. Azalea keeps a manifest on the disk for incrementals, checksums, and a later claim. The computer can still be a viewer for that USB disk. The folder copy is not the backup system. - Azalea vs Google Photos: https://photos.duguying.net/en/compare/google-photos Use Azalea if the job is google photos original quality backup: uncompressed files, USB or NAS as a target, keys that are not a Google login. Keep Google Photos if you want face search, shared albums, and an account that follows every device. They can sit side by side. Do not let both auto-delete locals. - Azalea vs iCloud Photos: https://photos.duguying.net/en/compare/icloud Stay on iCloud Photos if you live inside one Apple ID and you accept placeholders on the phone. Use Azalea if you might leave iOS, you want USB or S3 as a second original, or you do not want the whole roll locked to that account. Make the Azalea copy first; then decide whether to turn Optimize on. - Azalea vs Immich: https://photos.duguying.net/en/compare/immich Use Immich if you want a self-hosted Google Photos: a server that stays up, a web timeline, machine learning, and you are willing to run Docker. Use Azalea if you want originals on a disk or bucket and you do not want to operate a server. Azalea is not an Immich replacement in the server sense. People searching immich alternative often want less ops, not another stack. ## Features - Claim a library on the other phone: https://photos.duguying.net/en/features/migration Finish the library on the old phone, then add the same storage profile on the new one and claim it. iOS local identifiers will not map on Android. The shuttle can be object storage or a portable disk. The Pixel 8 → iPhone 16 run moved 11,614 items that way. - NAS and Samba: https://photos.duguying.net/en/features/nas Set provider to Samba, endpoint to the NAS host, bucket to the share name, and username/password on the access/secret fields. No libsmbclient. No presigned URLs and no free-space probe. Two phones writing one Synology DSM 7 share has been reproduced. - Object storage: COS, OSS, S3: https://photos.duguying.net/en/features/object-storage Create a profile for Tencent COS, Aliyun OSS, or Amazon S3 with your bucket, region, and access keys. Object keys match across iOS and Android, so the other phone can claim the same bucket. We do not provide a bucket and we do not proxy originals. - USB and portable-disk backup: https://photos.duguying.net/en/features/usb Azalea writes a photo library onto a disk you plug in. iOS cannot enumerate USB volumes, so you pick a folder once. Android must grant a document tree. Illegal exFAT names are escaped. Unplugging resumes from the index, not from byte zero.