Tengo un montón de fotos en mi Samsung Galaxy Tab con 3.2 que me gustaría copiar por USB a mi máquina principal con Linux para poder trabajar en ellas con GIMP y otras herramientas poderosas. A pesar de que esto parece algo simple y común, no he encontrado ninguna forma de hacerlo después de horas de buscar en Google y experimentar.
Algunas respuestas y artículos que ya están disponibles asumen la existencia de sdcard, que no tengo (AFIK), mencionan directorios llamados /dcim o /emmc (sp?), involucran software solo para Windows como Kies, o se trata de algunos especializados. problema no relevante aquí.
Pensé que podía hurgar en el sistema de archivos del Galaxy Tab con adb, pero no encontré ningún lugar para guardar .jpg u otros archivos de imagen, de los cuales debería tener al menos 30 o más. Si supiera el camino, podría simplemente hacer un adb pull para obtener mis fotos.
Si es posible, prefiero usar adb pull, ya que se puede automatizar, pero también me pregunto cómo la gente común, los no expertos en tecnología, sacan sus fotos de sus tabletas. He leído sobre MTP y que la forma de hacer las cosas del dispositivo de almacenamiento masivo USB no funciona con el Galaxy Tab (¿o cualquier Samsung?)
Para que quede claro, mis fotos existen en la tableta. Puedo verlos todos en la Galería, como usuario final habitual. Tengo el cable USB adecuado y adb funciona bien.
Supongo que tiene Galaxy Tab con Honeycomb y no tiene una ranura para tarjeta SD, pero tiene 16/32 GB de almacenamiento interno. En Honeycomb, se utiliza el modo MTP (Protocolo de transferencia de Windows Media) en lugar del almacenamiento masivo USB. Es por eso que quizás no te funcione.
Lea primero qué es MTP y por qué los OEM lo utilizan ahora aquí. MTP e ICS . También esta pregunta debería ser útil: Android Stack Exchange: ¿puedo deshabilitar el modo MTP y solo tener una conexión USB normal?
¿Ha intentado habilitar la compatibilidad con MTP para Linux? Estos son los pasos para una distro de Ubuntu - Guía para configurar MTP .
Alternativamente, mediante el uso de ADB , creo que puede acceder a los archivos de la Galería en formato /mnt/sdcard/
. La sdcard
carpeta debería estar allí incluso si no tiene una ranura para tarjeta SD. Las fotos de la cámara estarían en la /DCIM
carpeta.
Los pasos completos serían (si alguien necesita) -
adb shell
cd /mnt/sdcard/DCIM/
Puede verificar qué carpetas existen aquí y verificar si sus archivos multimedia están aquí o no.
Escribí un pequeño script para hacer esto por mí que elimina archivos del dispositivo después de extraer:
#!/bin/sh
cleanup() {
[[ -n "$dest" ]] && cd "$OLDPWD" && rmdir --ignore-fail-on-non-empty "$dest"
}
trap cleanup EXIT
DIRS=( /storage/emulated/0/DCIM/Camera
/storage/emulated/0/Pictures/Office\ Lens )
dest=$(mktemp -d -p .) && cd $dest
echo output directory: $(pwd)
for dir in "${DIRS[@]}"
do
echo downloading from $dir
adb shell ls "'$dir'/*.jpg" 2>/dev/null | xargs -I{} -n 1 -d '\n' sh -c 'adb pull -a "$1" && adb shell rm "\"$1\"" && adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d \"file://$1\" || exit 255' -- {} || break
done
El proceso principal es un bucle que se ejecuta una vez para cada directorio $dir
especificado en $DIRS
que finaliza en el primer fallo.
Evita el break
procesamiento en caso de error para que el script se cierre en el primer error.
El bucle ejecuta un comando compuesto para cada directorio enumerado $DIRS
en $dir
. La primera pieza es sencilla:
ls "'$dir'/*.jpg" 2>/dev/null
Hace lo que dice en la lata: enumera todos los archivos JPEG ubicados en $dir
. 2>/dev/null
Oculta el mensaje de No such file or directory
error que, de lo contrario, se mostraría cuando no existen tales archivos.
La salida de ls
se canaliza a xargs
: los argumentos establecidos {}
como marcador de posición, \n
como delimitador y procesa los archivos uno a la vez. La línea de comando utilizada para procesar cada archivo es la siguiente:
sh -c 'adb pull -a "$1" && adb shell rm "\"$1\"" && adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d \"file://$1\" || exit 255' -- {}
Que es en sí mismo un comando compuesto de tres adb
comandos ejecutados por un sh
shell al que se le da el archivo como argumento ( $1
) especificado por su {}
marcador de posición.
El primer comando descarga el archivo:
adb pull -a "$1"
Si eso tiene éxito, el segundo comando elimina el archivo del dispositivo Android:
adb shell rm "\"$1\""
Las comillas adicionales son necesarias para que los nombres de archivo que contienen espacios en blanco se transfieran correctamente al archivo adb shell
. Si ese comando tiene éxito, el comando final le permite al dispositivo saber que el archivo se ha ido:
adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d \"file://$1\"
Una vez más, se solicita cotización adb shell
. Este paso es necesario para actualizar las imágenes enumeradas en la aplicación Galería (de lo contrario, es posible que se almacenen en caché y aún se muestren).
El comando compuesto finaliza exit 255
en caso de que alguno de los adb
comandos falle. Esto tiene un significado especial xargs
y hace que finalice sin procesar más archivos.
Esta es una secuencia de comandos rápida y sucia; probablemente podría mejorarse, pero espero que sea útil tal como está.
Si no puede encontrar sus archivos fácilmente usando ADB en /mnt/sdcard (que, como menciona Sameer, es donde debería estar, incluso si no tiene una tarjeta SD externa), puede que le resulte más fácil usar un archivo local explorer para buscar/administrar tus fotos. Para muchas distribuciones (como Ubuntu), debe agregar manualmente un identificador USB para el dispositivoudev
después de instalar ADB.
No creo que el sistema de archivos en las pestañas de Android sea universal.
No he jugado con el Galaxy Tab, pero en mi Asus TF101, el almacenamiento interno está en /mnt/sdcard, mientras que en el Acer Iconia de mi papá, es /sdcard (IIRC).
De un rápido google, parece que las fotos de Galaxy Tab se almacenan en /sdcard/DCIM/Camera/ o /Data/DCIM/Camera/ para almacenamiento interno o quizás /sdcard/external_sd/DCIM/Camera/ si usa la tarjeta SD 'externa' .
Buscaría estas tres carpetas usando un administrador de archivos en su dispositivo (o ADB) y luego usaría ADB para extraerlas como usted describió una vez que haya encontrado sus fotos.
DarenW
normando h