¿Cómo copiar todas las fotos en la galería a la máquina de escritorio Linux?

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.

Respuestas (4)

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 sdcardcarpeta debería estar allí incluso si no tiene una ranura para tarjeta SD. Las fotos de la cámara estarían en la /DCIMcarpeta.

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.

Hay un /mnt pero nada en su interior. ¡Para mí, este mítico directorio de tarjetas SD es tan real como los unicornios!
Gracias por el puntero a una forma rápida de explorar el contenido del dispositivo. :-) ¡Fue un tirón rápido de adb más tarde para obtener lo que necesitaba! ¡Gracias!

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 $direspecificado en $DIRSque finaliza en el primer fallo.

Evita el breakprocesamiento en caso de error para que el script se cierre en el primer error.

El bucle ejecuta un comando compuesto para cada directorio enumerado $DIRSen $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/nullOculta el mensaje de No such file or directoryerror que, de lo contrario, se mostraría cuando no existen tales archivos.

La salida de lsse canaliza a xargs: los argumentos establecidos {}como marcador de posición, \ncomo 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 adbcomandos ejecutados por un shshell 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 255en caso de que alguno de los adbcomandos falle. Esto tiene un significado especial xargsy 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.

¿En serio? Conecté mi dispositivo a través de USB y "simplemente funcionó" (TM). Estoy ejecutando Ubuntu 10.4
Nunca he visto uno conectarse sin hacer la adición manual todavía, yo mismo. ¿Era una tableta? Es posible que se esté identificando de manera diferente a través de USB que un teléfono, o el fabricante podría haberlo modificado.
Sí, un Asus TF-101 con 3.2 y 4.0.x. Pero mi teléfono (LG Optimus One) también se conecta siempre que la depuración USB esté marcada en la configuración.
Ahora que lo pienso, el Acer Aconia no "simplemente funcionó", por lo que puede depender del fabricante.

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.