Mover archivos desde Android, lista configurable de directorios, línea de comandos

Para no quedarme sin espacio en mi Android, a menudo muevo todas las imágenes a mi computadora de escritorio, a través de USB. Lo hago casi todos los días, ya que también temo perder mis fotos si se me cae el teléfono.

Problema : toma mucho tiempo, porque varias aplicaciones de Android colocan sus imágenes en varias carpetas (aplicación de cámara de archivo, aplicación de cámara favorita, aplicación de cámara HDR, aplicación de cámara Foodie, además de todas las aplicaciones de mensajería que almacenan imágenes recibidas en su propia carpeta, a veces incluso separando entre fotos y videos).

Entonces, estoy buscando una herramienta que mueva todas las imágenes de todas estas carpetas.

Requisitos:

  • Se ejecuta en Linux reciente
  • Compatible con Android 7+
  • Línea de comando, debe hacer las transferencias sin preguntar o mostrar ninguna interfaz de usuario, o como máximo una notificación de escritorio después de que se realiza la transferencia
  • Código abierto y gratis
  • Debido a un plan de datos limitado, la transferencia de Internet no es una opción, debe ser a través de USB. Me conecto a través de USB todos los días para cargar el dispositivo para que no me moleste.

Podría permitirme configurar las rutas desde las que quiero que se muevan las imágenes, o podría descargarlas desde las carpetas habituales donde las aplicaciones conocidas colocan sus imágenes.

Respuestas (2)

¿Qué pasa con un script de shell que se usa adb pullpara recuperar los archivos y, después de una transferencia exitosa, realiza adb shell 'rm <filespec>'? Puede configurar fácilmente las ubicaciones como una matriz para caminar.

Alternativamente, al usar adbfs , puede montar su dispositivo y luego manejar su almacenamiento como si fuera local, por lo que cualquier herramienta disponible para realizar dicha tarea en Linux estaría a su disposición, lo que haría que la tarea fuera menos propensa a errores. esqueleto crudo:

# folders on your Android device, where they are mounted by adbfs:
declare -a SRCDIRS=(/mnt/android/folder1 /mnt/android/folder2)
# root folder on your Linux machine, where they should go to:
TARGETROOT="/home/nicolas/Pictures"

# Now move them over:
for sdir in $SRCDIRS; do
  for pic in $(ls -l $sdir); do
    mv "$pic" "$TARGETROOT/$(basename $sdir)"
  done
done

Esto debería cumplir perfectamente con sus requisitos:

  • Funciona en Linux: Sí. En todas partes se ejecuta Bash4+, de hecho.
  • Línea de comando: Sí.
  • Sin GUI, preferiblemente sin notificaciones: Exactamente. Sin embargo, si desea recibir notificaciones, sería posible usar, por ejemplo, notify-send.
  • Código abierto y gratis: Sí, ambos.
  • Transferencia vía USB: Sí. Sin embargo, podría hacerlo a través de WiFi si es necesario, si configura ADB sobre TCP.
  • Permite configurar rutas: Incluso requiere eso 😁
Había pensado en adb pull+rm, pero estoy un poco preocupado por eliminar archivos en casos extremos. adbfs suena bien, ¡lo intentaré!
Comparto tus preocupaciones. Es por eso que recomendé adbfs y el mvcomando: la fuente solo se eliminará cuando la copia se haya realizado correctamente.
Un problema con el adbfsenfoque parece ser que los medios no se eliminan del teléfono (incluso después de reiniciar, las imágenes siguen ahí). ¿ Quizás adbfses de solo lectura?
@NicolasRaoul, ¿en qué versión de Android estás? De hecho, hubo un problema con el acceso de escritura en Android 7+, pero se suponía que se solucionaría (el problema aún está abierto, por lo que puede verificarlo). En Android 6 (y por debajo) funciona perfectamente, lee y escribe.

Escribí una herramienta para esto, basada en la respuesta de Izzy:

https://github.com/nicolas-raoul/mover-archivos-desde-android

Se basa en adbfs, montando los dispositivos Android y luego moviendo todos los archivos que se encuentran en formato directories.conf.

Fuente abierta. Bastante rapido. Funciona con Ubuntu 2018.04 y 2019.04, probablemente también con otros.