4 points par GN⁺ 2024-01-06 | 1 commentaires | Partager sur WhatsApp
  • Alors que l’espace de stockage iCloud approchait de la limite de 200 Go et que les photos occupaient à elles seules environ 127 Go, une méthode détournée a été tentée pour trouver et supprimer directement les grosses vidéos au lieu de passer à l’offre 1 To
  • Ni Apple Photos ni le web iCloud ne permettent de trier par taille de fichier, et même les applications tierces affichaient les photos déchargées sur iCloud comme si elles faisaient 0 o, ce qui les rendait peu utiles pour faire le tri
  • En exploitant le fait que le badge de durée de lecture des vidéos dans iCloud Photos sur le web est un élément HTML video-text-badge, un script JavaScript a permis de repérer les longues vidéos et de les mettre en évidence avec une bordure rouge
  • Après avoir téléchargé puis supprimé les vidéos de plus de 30 secondes, les fichiers récupérés ne représentaient qu’environ 7 Go, mais l’espace de stockage iCloud a diminué d’environ 55 Go, un écart inattendu
  • Les nouvelles vidéos 4K correspondaient presque exactement entre la taille du fichier et la variation affichée sur iCloud, mais les anciennes vidéos semblaient compter davantage dans iCloud que leur taille réelle, ce qui suggère que les anciennes grosses vidéos peuvent être prioritaires à supprimer

Repérer les longues vidéos sur le web iCloud

  • Après une alerte d’Apple sur le stockage, une alternative a été recherchée car passer de 200 Go à 1 To faisait plus que tripler le coût
  • La majeure partie du stockage était occupée par les photos, avec environ 127 Go, mais ni Apple Photos ni le navigateur iCloud n’offraient de tri par taille de fichier
  • Les applications censées afficher les doublons ou la taille des fichiers vidéo montraient elles aussi les photos déchargées sur iCloud comme si elles faisaient 0 o, ce qui aidait peu pour un vrai nettoyage
  • Il fallait aller sur le site web iCloud dans Photos -> Types de médias -> Vidéos, puis dézoomer au maximum pour afficher un grand nombre de vidéos à la fois
  • En partant du principe que le badge de durée de chaque vidéo était un élément HTML, il devenait possible de le rechercher et de le filtrer en JavaScript ; un code a donc été écrit pour mettre en avant les vidéos longues
    • la classe du badge de durée est video-text-badge
    • le script recherche les badges présents dans la page, les trie selon la durée et met en évidence les éléments dépassant un seuil défini
    • comme iCloud ne charge que les éléments visibles à l’écran, le script s’exécute à intervalles réguliers via un timer pour traiter aussi ceux qui apparaissent lors du défilement
  • L’utilisation consiste à ouvrir la console JavaScript sur la page iCloud et à y coller l’intégralité du gist
  • Au final, les vidéos de plus de 20 secondes étaient encadrées en rouge, ce qui facilitait la sélection, le téléchargement puis la suppression de plusieurs grosses vidéos

Évolution de l’espace après suppression et deux expériences

  • Quand le script a servi à supprimer toutes les vidéos iCloud de plus de 30 secondes, les vidéos téléchargées représentaient environ 7 Go, mais l’espace iCloud a diminué d’environ 55 Go
    • l’ensemble des vidéos téléchargées occupait 8 Go sur le disque
    • l’usage iCloud est passé de 199 Go à 143 Go
  • La première expérience consistait à téléverser une vidéo 4K avec beaucoup de mouvement afin d’observer la réaction du stockage iCloud
    • la taille du fichier téléversé était de 281 Mo
    • après le téléversement, l’usage iCloud était de 145,33 Go
    • après téléchargement puis suppression, le fichier faisait toujours 281 Mo
    • après suppression, l’usage iCloud affichait 145,6 Go, soit un écart d’environ 270 Mo
  • La seconde expérience portait sur une vieille vidéo courte qu’iCloud affichait comme un gros fichier
    • iCloud indiquait cette vidéo à 128 Mo
    • le fichier téléchargé faisait 47 Mo
    • l’usage iCloud était de 145,29 Go avant suppression, puis de 145,12 Go après, soit une baisse d’environ 170 Mo
  • La suppression d’environ 7 Go de fichiers a ainsi libéré plus de 7 fois plus d’espace, et les anciennes grosses vidéos semblaient occuper davantage de stockage sur iCloud que leur taille réelle
  • La cause n’a pas été identifiée, mais le résultat a tout de même été de récupérer plus de 50 Go d’espace iCloud et de conserver un petit script JavaScript réutilisable pour refaire la même opération

1 commentaires

 
GN⁺ 2024-01-06
Avis de Hacker News
  • Photos.app n’affiche pas la taille des fichiers, donc j’avais envisagé de créer une extension Photos.app ou une application séparée pour trouver les gros fichiers.
    Mais l’API ne semblait pas exposer la « taille du fichier », et je n’ai en tout cas pas trouvé de méthode simple.
    Je vois plutôt les « photos » ou « vidéos » comme une vue sur l’underlying « photo or video object ». Même si l’on rogne une vidéo, la vidéo originale complète reste présente, et il semble qu’il faille l’exporter pour qu’un fichier rogné, plus petit, soit réellement créé.
    C’est sans doute pour cela que la taille de fichier semble différente. En plus, quelqu’un dit avoir créé un AppleScript pour consulter la taille des fichiers : https://discussions.apple.com/docs/DOC-250000422

    • Oui, l’app Photos conserve le fichier original non modifié et stocke séparément les informations de retouche/rognage. Comme on peut revenir à l’original à tout moment et le modifier à nouveau, il est possible qu’elle conserve plusieurs exemplaires de la même image avant et après modification.
      Je me demande dans quelle API tu cherchais la « taille du fichier ».
      Avec l’API PhotoKit, j’ai pu récupérer les données de taille depuis Photos.app : https://alexwlchan.net/2023/finding-big-photos/
      Je ne l’ai testé que sur ma bibliothèque d’environ 26 000 éléments, mais c’était utile comme indicateur pour trouver les plus gros éléments. En revanche, je n’ai pas vérifié si exporter une vidéo de 1 Go réduisait bien l’utilisation d’iCloud de 1 Go.
    • En plus de cela, même si je n’ai pas encore regardé en détail, quand on importe des photos RAW+JPG, on peut définir lequel des deux est l’« original ». Si l’on ne vérifie pas le menu, on peut les importer et les modifier sans savoir lequel est utilisé.
      Ainsi, dans la bibliothèque, une photo fraîchement importée qui apparaît comme une seule vignette peut en réalité faire 5 Mo ou 50 Mo.
    • Si tu es prêt à écrire du code, je me demande si tu as regardé la base de données interne. La dernière fois que je l’ai vue, c’était simplement du sqlite, et même en la parcourant rapidement on pouvait en comprendre une partie.
    • C’est l’explication la plus plausible à la variation de taille des fichiers. J’ai moi aussi déjà vu une restauration de médias inattendue. Je pensais avoir coupé ou modifié une vidéo, mais elle était restée intacte dans toute sa durée et sa résolution.
      Cela explique aussi pourquoi le stockage de l’iPhone reste toujours proche de la limite, même quand on le gère de façon presque obsessionnelle.
    • C’est possible avec https://github.com/RhetTbull/osxphotos :
      osxphotos query --min-size 100MB --add-to-album "Big Files"
      Cela trouve toutes les photos et vidéos de plus de 100 Mo et les ajoute à l’album « Big files ».
      Pour plus de détails, voir osxphotos query --help, ou osxphotos docs pour ouvrir la documentation dans le navigateur. À noter : c’est un outil que j’ai créé.
  • C’est peut-être un bug, mais dans certains cas il est aussi possible qu’iCloud stocke discrètement plusieurs versions du même fichier. Apple fait des choses similaires avec d’autres fichiers multimédias.
    Le dernier exemple est intéressant :
    « iCloud indique que la vidéo fait 128 Mo, mais une fois téléchargée, la vidéo réelle faisait 48 Mo, et sa suppression a libéré environ 170 Mo d’espace. »
    Cela suggère qu’iCloud ne se contente pas d’afficher incorrectement la taille du fichier d’exemple. Si l’on supprime un fichier de 128 Mo, l’espace iCloud libéré devrait être d’environ 128 Mo seulement, mais en réalité l’espace libéré était proche de 176 Mo, soit la taille affichée de 128 Mo plus la version téléchargée de 48 Mo. Si iCloud affiche l’espace libre en l’arrondissant par tranches de 10 Mo, cela semble tout à fait cohérent.

    • Les sauvegardes différentielles ou une forme quelconque de versionnement figuraient parmi les causes les plus évidentes. Un stockage entièrement dupliqué pour la conservation des fichiers est aussi possible. Le problème, c’est que tout cela est totalement opaque.
      Au final, on se retrouve de plus en plus lié à un service de stockage, avec un abonnement régulier basé sur le volume total, mais presque aucune information sur la manière d’optimiser cet espace. Pour un consommateur qui veut rester dans un palier de coût fixe ou améliorer le ratio stockage/prix, on a l’impression qu’il ne reste qu’à ne rien faire et continuer à payer davantage.
      La stratégie commerciale moderne de l’industrie tech consiste à se cacher derrière la complexité. Les coûts seraient trop complexes pour être compris, et exposeraient trop d’informations internes aux concurrents, etc. Pourtant, quand il s’agit de vérifier que l’entreprise fonctionne au-dessus de ses coûts, ces métriques sont bien produites d’une manière ou d’une autre. Quand le consommateur essaie de comprendre, soudain c’est trop compliqué.
      Le problème, c’est que la technologie atteint souvent réellement un niveau de complexité très élevé, et les dirigeants le savent, ce qui en fait une excuse assez valable. Et, comme par hasard, c’est précisément là qu’ils concentrent les investissements et ajoutent leur marge.
    • Sur iPhone, les retouches de photos et de vidéos ne sont que des métadonnées, et le fichier original est conservé. Je viens de faire un test en enregistrant une vidéo, en la coupant en deux, puis en téléchargeant le fichier depuis iCloud.
      Le fichier rogné était plus petit que la taille affichée par iCloud, mais quand j’ai choisi de télécharger l’original non modifié, sa taille correspondait à celle affichée par iCloud.
    • Une autre source fondamentale de confusion est que les photos et vidéos de la bibliothèque Photos ne sont pas simplement des fichiers copiés dans un espace de stockage. Photos stocke aussi des métadonnées pour les retouches, les rendus, les vignettes et diverses données nécessaires aux fonctions de l’app.
      Ainsi, quand on synchronise des photos avec iCloud, ce ne sont pas seulement des fichiers individuels qui sont synchronisés, mais le conteneur « Photos Library » géré par l’app Photos.
      Si l’on ajoute directement des fichiers individuels depuis le Finder ou l’app Fichiers, leur taille correspond exactement entre iCloud et le système de fichiers local.
    • C’est probablement effectivement le cas, mais cela ne les exonère pas pour autant.
      Quand on achète un disque dur ou une clé USB, on peut utiliser un certain nombre de Go comme on l’entend. Si l’on y met un fichier de 1 Go, l’espace libre diminue de 1 Go. Selon le système de fichiers, on peut perdre quelques Ko de métadonnées, mais le choix du système de fichiers appartient à l’utilisateur, il n’est pas imposé par le périphérique de stockage.
      Même si le contrôleur NAND utilise quelques Mo de zone d’overprovisioning pour stocker une table de correspondance des blocs, ou s’il duplique les données par commodité, l’utilisateur ne se voit pas facturer le coût de cette zone d’overprovisioning.
      Ici, on vend un périphérique de stockage accessible en HTTP, et quand l’utilisateur écrit un fichier de 1 Go, le service le réplique/le convertit, etc. pour sa propre commodité, puis facture à l’utilisateur le stockage de ces copies qu’il n’a pas demandées. C’est nouveau et inattendu.
  • J’ai transformé cette idée/solution en script TamperMonkey/Greasemonkey
    J’ai aussi ajouté une fonctionnalité qui « masque » tous les éléments ne correspondant pas aux critères
    https://github.com/seffignoz/icloudcleanup

  • C’est l’une des raisons pour lesquelles je fais de l’auto-hébergement. Je ne fais pas confiance à la clarté ni à la transparence des fournisseurs cloud. Même si une solution auto-hébergée est beaucoup moins stable, moins sûre et moins performante, je ne pense probablement pas que je changerais
    Personnellement, j’utilise immich. C’est une solution assez aboutie, avec des apps iOS/Android, un composant serveur et des options de synchronisation/sauvegarde
    https://immich.app/

    • Apple ne semble pas encore avoir compris à quel point une interface de gestion des quotas peut être une excellente opportunité commerciale. Il n’y a pas de meilleur endroit pour vendre davantage de stockage
      Google le fait. En regardant https://one.google.com/storage et https://photos.google.com/quotamanagement, on voit que c’est conçu pour aider à trouver quoi supprimer, puis, au final, vous lasser des suppressions et vous pousser à acheter plus de stockage
    • Ça a l’air intéressant, mais vu l’avertissement en haut, je pense qu’il vaut mieux attendre que ce soit plus stabilisé
  • Si j’ai bien compris, iCloud stocke les originaux en qualité complète et télécharge sur le téléphone des versions optimisées de moindre qualité
    Dans les réglages de l’iPhone, sous Apple ID > iCloud > Photos, il y a une option « Optimise iPhone Storage », activée par défaut
    La description de cette option indique que si l’espace du téléphone vient à manquer, les photos et vidéos en pleine résolution sont automatiquement remplacées par des versions plus petites adaptées à l’appareil, et que les versions pleine résolution peuvent être téléchargées depuis iCloud à tout moment
    Ça semble plutôt raisonnable

    • Cela dit, le téléchargement devrait quand même renvoyer le fichier original, donc ça n’explique pas l’écart de taille de stockage
    • Ça n’explique pas non plus le cas où l’auteur a téléversé un nouveau fichier puis l’a téléchargé, sans constater de différence importante de taille. L’écart de taille semble ne concerner que les anciens fichiers vidéo
    • Ce n’est pas lié
      Cela concerne le stockage du téléphone visible dans Settings > Manage storage, et n’a rien à voir avec le stockage cloud
  • Article intéressant. J’ai dû passer à un forfait iCloud supérieur à cause d’un problème similaire, donc ce n’est peut-être pas une priorité élevée à corriger du point de vue d’Apple
    Quand on prend des photos en RAW+JPEG, Apple Photos associe les deux images. Ce n’est pas une méthode particulièrement rare chez les amateurs de photo, et c’est utile parce qu’on peut passer facilement du RAW au JPEG sans accumuler dans la bibliothèque des tonnes de photos quasi dupliquées
    Mais à cause de cette association et de la conception du système de fichiers décrite dans l’article, il semble impossible de les séparer facilement pour ne supprimer que le RAW. Des années plus tard, il me reste d’énormes fichiers RAW auxquels je ne toucherai jamais, mais je ne peux pas les supprimer parce que je veux conserver les JPEG, beaucoup plus petits
    Le plus simple semble être d’exporter les originaux, de les supprimer de la bibliothèque, puis de réimporter uniquement les JPEG, mais on perd alors des années de métadonnées accumulées dans la bibliothèque
    Donc je n’ai pas d’autre choix que de passer au forfait supérieur

    • C’est peut-être une question idiote, mais ne peut-on pas exporter puis réimporter les métadonnées ? Je me demande s’il existe des métadonnées autres que les données EXIF, ou si Apple ne les exporte tout simplement pas toutes
      Si vous parlez de fonctions supplémentaires comme la reconnaissance des visages, l’app ne les retraiterait-elle pas après la réimportation des JPEG ?
    • L’outil open source osxphotos (https://github.com/RhetTbull/osxphotos) peut aider. Il permet d’exporter les images JPEG tout en préservant les métadonnées via l’utilitaire tiers exiftool :
      osxphotos export /path/to/export --has-raw --skip-raw --exiftool
      Cela exporte toutes les images ayant une paire RAW, mais ignore le composant RAW, et utilise exiftool (https://exiftool.org/) pour écrire des métadonnées comme les mots-clés dans les fichiers JPEG exportés. Ensuite, on peut les réimporter en les faisant glisser dans Photos ou en exécutant osxphotos import /path/to/export/*
      Les commandes export et import proposent aussi beaucoup d’autres options, par exemple pour contrôler le répertoire d’export. Utilisez osxphotos help export, ou osxphotos docs pour ouvrir la documentation dans le navigateur. À noter : je suis l’auteur d’osxphotos
    • Je ne suis pas encore dans cette situation, mais comme je suis passionné de photo, je pense que ça finira par m’arriver, alors j’ai cherché
      En lançant File/Export Unmodified Originals, il semble que les RAW+HEIC et un fichier sidecar séparé contenant les métadonnées soient exportés. Ensuite, si l’on met le fichier RAW de côté et qu’on importe le fichier HEIC, le fichier sidecar de métadonnées serait automatiquement importé aussi
      En revanche, on perd les retouches. Il semble quand même qu’on puisse, d’une façon ou d’une autre, faire un « copy edits ». Quelqu’un de technique pourrait probablement automatiser ce processus avec AppleScript
      Mais c’est inutilement fastidieux, et cela devrait être une fonctionnalité intégrée à Photos.app. Comme cela aide à pousser vers un forfait iCloud plus cher, il est évident que la priorité est faible
    • Je suis actuellement dans la même situation, et je n’ai pas encore réussi à me lancer dans ce travail pénible. Je cherche clairement une solution
  • Étonnamment, avant les vacances, j’ai reçu d’Apple une alerte de stockage similaire, et j’ai décidé de télécharger toutes mes photos/vidéos sur mon serveur multimédia au lieu de les laisser sur iCloud.
    Il n’existe pas de méthode simple et intuitive pour télécharger une archive depuis iCloud. J’avance lentement en utilisant plusieurs machines et appareils.
    Le problème des changements récents chez Apple, c’est qu’ils augmentent les prix sans vraie raison. Nous continuerons à prendre des photos et des vidéos, et avec les technologies et fonctionnalités récentes, la taille des fichiers ne peut que continuer à augmenter.

    • Il existe une façon simple de récupérer ses données. Elle est juste un peu cachée.
      Cela fonctionne de manière similaire à Google Takeout. Sur Mac, iPhone, iPad ou PC, connectez-vous à la page de votre compte Apple ID sur appleid.apple.com, allez dans « Data & Privacy », puis choisissez « Manage Your Data and Privacy ».
      Sur la page suivante, allez dans « Get a copy of your data » puis sélectionnez « Get started ».
    • Un outil qui peut vous changer la vie :
      https://github.com/icloud-photos-downloader/icloud_photos_downloader
    • J’utilise PhotoSync (https://www.photosync-app.com/home) pour copier les photos de mon iPhone vers mon NAS. C’est un excellent programme.
      Au besoin, il peut aussi télécharger les photos depuis iCloud et convertir leur format. Tous les quelques jours, j’envoie les nouvelles photos vers mon NAS afin de toujours conserver une copie locale, et ces copies sont aussi sauvegardées chaque nuit sur Backblaze B2.
      Grâce à la conversion de format, je peux conserver les photos sous forme de paires HEIC+JPG, ce qui me donne à la fois l’original et une version plus facile à utiliser.
      Ce que j’aimerais vraiment, c’est un outil qui fasse la même chose pour iCloud Drive. J’y stocke pas mal de choses, et ça m’inquiète de ne pas avoir de moyen raisonnable de les sauvegarder. La méthode recommandée par Apple (https://support.apple.com/en-us/HT204055) laisse franchement à désirer.
    • Si vous avez macOS, pourquoi pas l’app Photos ? De mon côté, je conserve une copie locale de ma photothèque iCloud et je la synchronise avec l’app Photos de macOS.
  • Ce que je déteste le plus, c’est cet étrange palier tarifaire qui fait passer de 200 Go à 2 To. Il n’y a aucun moyen de payer par paliers pour 500 Go ou 1 To, qui conviendraient parfaitement à beaucoup de familles.
    À une époque où le stockage est devenu une commodité, il devrait être facturé au Go utilisé.

    • C’est ce qui permettrait de subventionner l’offre gratuite.
    • Si besoin, on devrait pouvoir ajouter autant de blocs de 50 Go que l’on veut aux 200 Go.
  • Ce qui consomme une grande partie de mon stockage iCloud, ce sont les versions vidéo « live » des photos. Elles prennent plus de place que les photos avec un très court fragment de mouvement associé.
    Jusqu’ici, la seule méthode que j’ai trouvée consiste à télécharger les fichiers en local, les supprimer d’iCloud, puis supprimer les vidéos locales et ne téléverser que les images fixes restantes.
    C’est long, bricolé, et je crains toujours de supprimer quelque chose ou de perdre un élément important pendant le processus.
    Je me demande s’il existe un outil qui automatise cela tout en offrant un certain contrôle d’édition, afin d’identifier et conserver les quelques images « live » que l’on veut vraiment garder.

  • Est-ce que j’ai bien lu ?
    Si c’est un phénomène répandu, on pourrait considérer qu’Apple gonfle les chiffres pour pousser à l’upgrade, et cela pourrait même déboucher sur un procès, non ?
    Je ne suis pas juriste.

    • L’article original ne tient pas compte du fait qu’ajouter des médias à Photos ne se résume pas à « copier un fichier puis le stocker ». L’app Photos, comme d’autres apps, possède son propre format de fichier Photos Library.
      Quand on ajoute une photo ou une vidéo, l’app Photos l’analyse et stocke diverses métadonnées nécessaires à son fonctionnement, y compris l’historique des modifications. Au final, tout cela est synchronisé avec iCloud.
    • Si l’on modifie une photo/vidéo sur place sans l’enregistrer comme nouveau fichier, iOS conserve le fichier original pour permettre l’annulation ou le retour en arrière. L’original n’est affiché nulle part, ni dans Photos ni dans la galerie iCloud. Cela pourrait être l’explication.
    • Moi aussi, j’ai lu l’article dans ce sens. On pourrait télécharger une certaine quantité de fichiers depuis un service de stockage cloud et les envoyer vers un autre pour voir s’il y a une différence nette.
      Il est aussi possible qu’Apple utilise encore un ancien format de système de fichiers pour iCloud. Le service existe depuis longtemps, et ils n’ont peut-être pas pris la peine de changer le format de stockage. Les images/vidéos des anciens comptes peuvent aussi se trouver sur des disques « anciens ».