Accueil/Sauvegarde USB et disque portable

Sauvegarde USB et disque portable

Auteur Azalea · Dernier test 2026-05-11

USB est un backend de premier rang, pas un interrupteur power-user. Le provider moteur est usb. Desktop et iOS utilisent par défaut le mode path. Android doit utiliser bridge parce que l’OTG ne vous donne qu’une URI content:// ; POSIX open() ne marche pas.

Ce que fait vraiment l’iPhone

iOS ne listera pas les volumes montés (FileManager.mountedVolumeURLs est vide hors macOS). L’app n’affiche jamais « SanDisk détecté ». Le chemin est :

  1. Branchez le disque jusqu’à ce qu’il apparaisse dans Fichiers.
  2. Azalea → stockage de sauvegarde → nouveau profil USB.
  3. Choisissez un dossier. L’app stocke un signet security-scoped, pas une chaîne de chemin brute.
  4. Chaque appel moteur ultérieur tourne dans withAccess. Utiliser le signet hors de ce scope devient une erreur de permission Rust opaque.

Le 21 février 2026, iPhone 15 + SanDisk Extreme 1 To : après le premier choix, verrouiller le téléphone a fait signaler le volume manquant au lancement suivant jusqu’à un rafraîchissement manuel. Ce n’est pas du remplissage de copie — iOS n’a pas de notification d’attachement à laquelle s’abonner.

Pourquoi Android est SAF

OpenDocumentTree, puis takePersistableUriPermission. Sautez l’appel de persistance et l’accord meurt au redémarrage. SafFileBridge ne parcourt pas DocumentFile.findFile (O(n) par niveau ; des dizaines de milliers de photos calent). Il préfère construire l’id de document.

Arrachez le câble et vous obtenez DeviceDetached, pas un échec I/O générique. Disque plein est OutOfSpace. L’UI doit se mettre en pause, pas peindre un élément en rouge et continuer à scanner.

Ce qui atterrit sur le disque

<root>/.album/manifest.jsonl est en ajout seulement. En-tête de version à la ligne un, puis object key logique, chemin physique, octets, MD5, tombstones. Un second téléphone revendique le même dossier en lisant ce registre et en inversant les noms échappés. .album/ n’apparaît jamais dans list.

exFAT n’a pas d’xattr. Stocker le MD5 comme le font les backends cloud lèverait ENOTSUP à chaque envoi USB. Les checksums vivent dans le manifeste à la place.

Ce qui n’arrivera pas

  • Pas de presign_put.
  • Ne formatez pas en APFS en attendant qu’Android y écrive.
  • Deux disques s’appelant tous les deux Backup se distinguent par l’UUID volumeIdentity(), pas l’étiquette de dossier.