Tengo una Mac y quiero transferir unos 30 GB de datos a una tarjeta SD más grande para usar con un nuevo teléfono Android.
El teléfono en cuestión es un Galaxy Stratosphere II.
No parece haber una manera sencilla de hacer esto.
hasta ahora lo he intentado
scp -pr
ejecutando SSHDroid
en el teléfono, a través de otra red wifi. Esto también funcionó, conservando la información de la marca de tiempo, pero fue terriblemente lento (<1 MB/s).adb push
para copiar archivos a través de una conexión USB. Esto tampoco funciona, incluso cuando agrego /.
al final como lo sugiere esta respuesta .simple-mtpfs
podría ser una opción, pero las instrucciones de compilación proporcionadas hacen referencia a ejecutables inexistentes.
Alt Mounter también parece que hace lo que quiero, pero se indica como "***EXTREMADAMENTE BETA***" y, por lo tanto, no es algo en lo que prefiera confiar mis archivos importantes.
Cuando actualicé una tarjeta SD diferente, experimenté con la copia de archivos a la tarjeta SD en un lector conectado a través de una máquina virtual Linux. Esto parecía funcionar, pero se cortaba misteriosamente después de copiar una fracción de los datos. Creo que esa vez terminé usándolo scp
y dejándolo correr por un día o dos.
Sigo profundizando en esto, pero tal vez alguien pueda ahorrarme algo de tiempo. ¿Hay una forma fácil de hacer esto?
Tanto OSX como Android brindan utilidades POSIX básicas, así que terminé yendo a la vieja escuela con esta:
$ tar czv "$PATH_TO_ORIGINAL_SDCARD" | split -b 2048m - sdcard-
Este comando crea fragmentos de 2 GB de un archivo del contenido de la tarjeta SD, con nombres como sdcard-aa
, sdcard-ab
y así sucesivamente. La división de 2 GB es necesaria porque Android File Transfer solo puede copiar archivos de 4 GB o menos.
Luego copié los archivos en el teléfono usando (¡sorpresa!) Android File Transfer y los recombiné y desarchivé en Terminal Emulator* usando este comando:
$ cat sdcard-* | tar xzv
Entonces, en realidad, Android realmente no viene con las utilidades básicas de POSIX, o al menos si las tiene, no están disponibles para la aplicación Terminal Emulator.
Pensé que sí porque SSHDroid proporciona estas utilidades a través de busybox
. Sospecho que Android no permite que los procesos ejecuten archivos que el usuario no posee; esto explicaría por qué no hay una aplicación disponible que se instale busybox
para teléfonos no rooteados.
busybox
es una utilidad que puede ejecutar cualquiera de una gran cantidad de comandos POSIX, dependiendo del nombre con el que se llame. La gente hace arreglos para que se le llame con nombres que no sean busybox
creando enlaces simbólicos con nombres como, por ejemplo, tar
.
Sin embargo, resulta que es posible instalar busybox en su propio directorio de inicio de la aplicación Terminal Emulator. Así que eso es lo que hice. Pasos:
busybox-android
del proyecto github del mismo nombre .busybox
.~/bin
y copie el busybox
archivo del lugar público donde lo puso en ese nuevo directorio.
cp
comando no está disponible en una sesión de Terminal Emulator (!), hágalo de esta manera:cat $PATH_TO_BUSYBOX/busybox > ~/bin/busybox
cd ~/bin
y crea un enlace simbólico: ln -s busybox tar
.cd /storage/extSdCard/
concatenar y extraer el contenido de sus archivos usando cat $PATH_TO_ARCHIVE/sdcard-* | ~/bin/tar xzv
./Volumes/oldphone/
. Así que ahora mueva todo desde ese subdirectorio (lo llamaremos $OLD_SDCARD_CONTENTS
) a la raíz de su tarjeta SD actual.
sh
(el shell utilizado por Terminal Emulator) no parece tener ninguna forma de seleccionar todos los archivos ocultos en un directorio, así que corrí bash
para hacer esto. Bajo bash, mv $PATH_TO_FILES/.[^.]* $DEST
moverá todos los archivos ocultos. Recuerde que debe acceder bash
a través de un enlace simbólico a busybox
, o simplemente hacer esta parte a través de ssh
(que es lo que hice).¡Uf! Me alegro de que haya terminado. Realmente espero no terminar aceptando esta respuesta; debería haber una manera mucho más fácil de hacer todo esto.
Por supuesto, podría haber descomprimido el archivo en una ssh
sesión desde mi computadora, pero esto habría requerido que ejecutara mi computadora durante el tiempo que fuera necesario. Además, por supuesto , busybox debería estar disponible en Terminal Emulator.