4 votes

Comment libérer le stockage interne en déplaçant les données ou en utilisant un lien symbolique / un montage lié avec le stockage adoptif ?

Galaxy S5 sous LineageOS 16 (Android 9).

J'ai des problèmes de manque d'espace de stockage, même si j'ai une carte SD externe de 128 Go, fusionnée avec le stockage interne. Existe-t-il un moyen de créer un lien symbolique de la mémoire interne vers la carte SD externe, même si elles sont techniquement fusionnées et ne sont pas identifiées comme des emplacements de stockage distincts dans Android en conséquence ?

Je n'ai jamais fait de liens symboliques sur Android, j'aimerais donc avoir des conseils ou des ressources à ce sujet.

5voto

Irfan Latif Points 16863

Tout d'abord, les liens symboliques ne fonctionnent pas sur le stockage émulé d'Android. Une solution de contournement consiste à utiliser montages de liaison à la place. Voir cette réponse pour les détails.

Mais Avec Adoptable Storage, vous n'avez pas besoin de :

  • Créer un lien symbolique vers la carte SD externe
  • Déplacement manuel des données vers une carte SD externe
  • Lier le montage d'un répertoire à partir d'une carte SD externe

Parce que ce que vous voyez comme /sdcard o /storage/emulated/0 devrait déjà être sur la carte SD Adoptable.

Lorsque vous formatez une carte SD externe en tant que Stockage adoptif il est monté à /mnt/expand/[UUID] qui contient une hiérarchie de fichiers très similaire à /data partition, comme /data/app , /data/data y /data/media etc. Lorsque vous migrer vos données vers le stockage adoptif nouvellement créé, les données de /data/media/ est déplacé vers /mnt/expand/[UUID]/media/ et le dernier est maintenant émulé et lié monté à /storage/emulated (que les applications voient).

Vous pouvez le vérifier en exécutant df o mount sur une application terminale ou adb shell .

Sans stockage adoptif :

~$ df --output=source,target
Filesystem                  Mounted on
/dev/block/dm-0             /data
/data/media                 /storage/emulated
/dev/block/vold/public:8,1  /mnt/media_rw/[UUID]

* dm-0 est crypté par FDE userdata partition, vold Le volume public est une carte SD externe ou un lecteur USB.

Avant de déplacer les données :

~$ df --output=source,target
Filesystem                  Mounted on
/dev/block/dm-0             /data
/data/media                 /storage/emulated
/dev/block/dm-1             /mnt/expand/[UUID]

* dm-1 est une carte SD Adoptable cryptée par FDE.

Après avoir déplacé les données :

~$ df --output=source,target
Filesystem                  Mounted on
/dev/block/dm-0             /data
/dev/block/dm-1             /mnt/expand/[UUID]
/mnt/expand/[UUID]/media    /storage/emulated

* En fait /data/media o /mnt/expand/[UUID]/media est émulé en /mnt/runtime/[default|read|write]/emulated qui est lié à /storage/emulated .

Vous pouvez seulement déplacer les applications (ainsi que leurs données) vers Adoptable Storage qui ont installLocation réglé sur preferExternal o auto par le développeur d'applications. En cas de auto l'emplacement d'installation par défaut (défini à l'aide de pm set-install-location ) décide de l'endroit où l'application sera installée. Voir cette réponse pour les détails.

Si vous voulez plus d'espace libre, remplacez les grands répertoires (comme /data/media , /data/app y /data/data ) avec des montages (ou bind-mounts) à partir de partitions (ou répertoires) sur une carte SD externe. Cependant, il faut faire attention aux permissions (DAC et MAC), sinon les applications (ou même le système d'exploitation) peuvent se casser.


RELATION :

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X