Es fácil de conseguir en un PC con Linux:
- Conecte ambas tarjetas SD al PC.
- Volcar la segunda partición de la vieja tarjeta SD a la nueva. También es posible directamente desde el dispositivo Android. Ver Creación del volcado de la partición .
- Redimensionar el tamaño del sistema de archivos a 30GB (el nuevo tamaño de la partición) usando
resize2fs
.
COPIAR TODO EL SISTEMA DE ARCHIVOS:
El método anterior también funciona en Android si puedes conectar la nueva tarjeta SD a través del lector de tarjetas SD USB OTG, mientras que la antigua está dentro del teléfono.
O puedes hacerlo en 2 pasos, como ya estás intentando:
-
Crear un volcado de la partición:
~# gzip -9ck /dev/block/mmcblk1p2 >/storage/sdcard1/sdcard2root.img.gz
Puede utilizar dd
o cat
o incluso cp
. Asegúrese de que tiene suficiente espacio en el almacenamiento primario externo (físicamente interno) para guardar la imagen volcada (y opcionalmente comprimida) de la segunda partición de la tarjeta SD.
La compresión sólo es útil en caso de escasez. Para evitar que se copien los bloques liberados del sistema de archivos (de los archivos eliminados) utilice e2image -rap
. O descartar el mapeo de bloques lógicos a físicos utilizando fstrim
(en el sistema de archivos montado) o e2fsck -E discard
, y soltar el caché de la página usando sync; echo -n 1 >/proc/sys/vm/drop_caches
.
-
Inserte la nueva tarjeta SD y haga la partición usando parted
o gdisk
o fdisk
.
-
Escribir la imagen de la partición en la nueva tarjeta SD:
~# gzip -dck /storage/sdcard1/sdcard2root.img.gz >/dev/block/mmcblk1p2
-
Maximizar el tamaño del sistema de archivos al tamaño de la partición:
~# resize2fs /dev/block/mmcblk1p2
COPIAR EL CONTENIDO DEL SISTEMA DE ARCHIVOS:
Otro método es copiar/mover sólo el contenido del sistema de archivos (archivos, directorios, etc.) y no toda la estructura del sistema de archivos. Pero los metadatos de los archivos deben ser preservados, o las cosas pueden romperse (ya que la partición debe ser montada dentro de /data
). Incluye timestamps
, permiso mode
, owner
, group
y extended attributes
En particular, los contextos de SELinux. Algunos binarios ejecutables (en /system
) también puede tener definidas las capacidades del archivo (guardadas como atributos extendidos), pero eso no suele ser necesario para los datos del usuario. Otros metadatos como las ACLs (también guardadas como atributos extendidos) y los atributos de archivo ( banderas del inodo ) no suelen utilizarse en los dispositivos Android.
En Linux herramientas como rsync
(o incluso cp
) puede conservar los metadatos necesarios. Como referencia, véase este y este respuesta. En Android (para mover el contenido en 2 pasos) tar
es una buena opción:
~$ cd /path/to/old_sdcard/mountpoint/
~$ tar --create --preserve-permissions --selinux --verbose --gzip --file=/storage/sdcard1/sdcard2root.tar.gz .
Inserte la nueva tarjeta SD, haga una partición (si es necesario) y cree un sistema de archivos con mkfs.ext4
(por defecto toma toda la partición). Para restaurar la copia de seguridad:
~$ cd /path/to/new_sdcard/mountpoint/
~$ tar --extract --preserve-permissions --selinux --verbose --gunzip --file=/storage/sdcard1/sdcard2root.tar.gz