3 votes

Comment déplacer une partition ext4 de 7 Go sur une carte SD externe vers une partition de 30 Go sur une autre carte SD ?

J'ai enraciné mon téléphone Android Lollipop 5.1.1 et installé Link2SD et lié les applications installées sur mon téléphone. ext4 7GB 2ème partition de la carte SD externe de 16GB . Les applications installées occupent 6,5 Go d'espace et j'ai peu d'espace maintenant. J'ai une carte SD externe de 64 Go et je veux lui consacrer 30 Go.

J'ai créé une image de la 2ème partition de 7GB de la carte SD externe avec la commande suivante :

dd bs=4k count= if=/dev/block/mmcblk1p2 | gzip -5 -c > /storage/sdcard1/sdcard2root.img.gz

Maintenant, quel est le moyen de cloner cette image sur une partition de 30 Go ?

2voto

Irfan Latif Points 16863

C'est facile à réaliser sur un PC Linux :

  • Fixez les deux cartes SD au PC.
  • Vider la deuxième partition de l'ancienne carte SD sur la nouvelle. C'est également possible directement depuis l'appareil Android. Voir Créer un vidage de partition .
  • Redimensionnez la taille du système de fichiers à 30 Go (la nouvelle taille de la partition) en utilisant la méthode suivante resize2fs .

COPIER TOUT LE SYSTÈME DE FICHIERS :

L'approche ci-dessus fonctionne également sur Android si vous êtes en mesure d'attacher la nouvelle carte SD par le biais d'un lecteur de carte SD USB OTG, alors que l'ancienne est dans le téléphone.

Ou vous pouvez le faire en 2 étapes, comme vous êtes déjà en train d'essayer :

  • Créer un dump de la partition :

    ~# gzip -9ck /dev/block/mmcblk1p2 >/storage/sdcard1/sdcard2root.img.gz

    Vous pouvez utiliser dd o cat ou même cp . Assurez-vous que vous avez suffisamment d'espace sur le stockage externe primaire (physiquement interne) pour enregistrer l'image vidée (et éventuellement compressée) de la deuxième partition de la carte SD.

    La compression n'est utile qu'en cas de faible densité. Pour éviter de copier les blocs du système de fichiers libérés (des fichiers supprimés), utilisez la commande e2image -rap . Ou rejeter le mappage des blocs logiques et physiques en utilisant fstrim (sur un système de fichiers monté) ou e2fsck -E discard et supprimer le cache des pages en utilisant sync; echo -n 1 >/proc/sys/vm/drop_caches .

  • Insérez une nouvelle carte SD et effectuez le partitionnement en utilisant parted o gdisk o fdisk .

  • Ecrire l'image de la partition sur la nouvelle carte SD :

    ~# gzip -dck /storage/sdcard1/sdcard2root.img.gz >/dev/block/mmcblk1p2
  • Maximiser la taille du système de fichiers par rapport à la taille de la partition :

    ~# resize2fs /dev/block/mmcblk1p2

COPIER LE CONTENU DU SYSTÈME DE FICHIERS :

Une autre méthode consiste à ne copier/déplacer que le contenu du système de fichiers (fichiers, répertoires, etc.) et non la structure entière du système de fichiers. Mais les métadonnées des fichiers doivent être préservées, sinon les choses risquent de se casser (puisque la partition doit être montée à l'intérieur d'un système de fichiers). /data ). Il comprend timestamps , permission mode , owner , group y extended attributes en particulier dans les contextes SELinux. Certains binaires exécutables (dans /system ) peuvent également avoir des capacités de fichier définies (enregistrées en tant qu'attributs étendus), mais cela n'est généralement pas nécessaire pour les données utilisateur. D'autres métadonnées comme les ACL (également enregistrées en tant qu'attributs étendus) et les attributs de fichiers ( drapeaux d'inode ) ne sont généralement pas utilisés sur les appareils Android.

Sous Linux, des outils comme rsync (ou même cp ) peut préserver les métadonnées requises. Pour référence, voir este y este réponse. Sur Android (pour déplacer le contenu en 2 étapes) tar est un bon choix :

~$ cd /path/to/old_sdcard/mountpoint/
~$ tar --create --preserve-permissions --selinux --verbose --gzip --file=/storage/sdcard1/sdcard2root.tar.gz .

Insérez la nouvelle carte SD, effectuez le partitionnement (si nécessaire), et créez le système de fichiers en utilisant la fonction mkfs.ext4 (par défaut, il prend toute la partition). Pour restaurer la sauvegarde :

~$ cd /path/to/new_sdcard/mountpoint/
~$ tar --extract --preserve-permissions --selinux --verbose --gunzip --file=/storage/sdcard1/sdcard2root.tar.gz

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