Copia de seguridad de almacenamiento interno y SD a través de script (USB)

tl; dr

  • Quiero hacer una copia de seguridad de mi almacenamiento interno y del contenido de la tarjeta SD cuando estoy conectado a través de un cable USB
  • debido a la cantidad potencialmente grande de datos, no quiero usar programas basados ​​en Wi-Fi
  • intento fallido de usar rsyncygvfs

¿Hay algo que pueda hacer?

Historia completa

Me gustaría hacer una copia de seguridad de los datos de mi teléfono basado en Android (actualmente 5.1.1). No quiero usar soluciones hacky inestables e inseguras basadas en WiFi con SSH y servidor aquí y cliente allá (lo que sea, en realidad, el kiessoftware poco confiable de Samsung me hizo pensar de esa manera).

A estas alturas, usé un Linux Mint actual (18.2), traté de leer datos del teléfono usando rsyncy el almacenamiento asignado gvfsque falló miserablemente (problemas de permisos, conexión inestable).

Me gustaría programar los directorios de los que hago una copia de seguridad y automatizar ese proceso en la medida de lo posible. ¿Puedo hacer que Android actúe como una especie de dispositivo virtual Windows/Linuxque permita algún tipo de acceso basado en archivos? ¿O un servidor Web-DAV conectado a través de un cable USB? ¡Nada de soluciones gratuitas en la nube (Google, OneDrive, Dropbox), tampoco, por favor!

Gracias por su ayuda.

¿Probaste Grsync? Instala eso y prueba. La interfaz de usuario es horrible pero hace el trabajo. Lo uso para hacer una copia de seguridad del teléfono y también para hacer una copia de seguridad de las particiones seleccionadas de la computadora portátil en un disco duro externo
Mira esto . También tiene un botón de prueba que simula la copia de seguridad y arroja errores antes de realizar la copia de seguridad.
Puede instalar desde aquí y funciona en 18.3. También agregue lo que leí en otro lugar, aunque los comentarios aquí indican lo contrario.
Gracias, lo intentaré a ver si soluciona mis problemas.

Respuestas (1)

Como la mayoría de las veces: error en la capa 8 del modelo OSI. Esto es lo que hice y lo que debería haber hecho:

Lo que hice

Monté mi unidad externa de destino usando sudo(nada malo hasta ahora) y, por lo tanto, solo roottengo permisos para escribir, rsyncno pude hacer nada (lo que tiene sentido después de todo), incluso cuando se ejecuta usando sudo. Dónde estaba exactamente el error, no estoy absolutamente seguro, pero concentrémonos en

lo que debí haber hecho

  • Monte el dispositivo externo usando las herramientas GUI (porque estoy usando una unidad externa encriptada)
  • Cree un directorio en la raíz de la unidad externa y chownenvíelo a su usuario designado (o grupo o ambos)
  • Correrrsync

Creé un pequeño script para automatizar la búsqueda de la gvfsruta y rsync a la unidad externa:

#!/bin/bash

PHONE_VENDOR=0000 # your phone vendor here!  
USERID=1 # your user ID here - possibly `id -u`

PHONE_BUS=\`echo $(lsusb -d ${PHONE_VENDOR}:) | cut -d' ' -f 2\`  
PHONE_BUS=${PHONE_BUS}%2C
PHONE_BUS=${PHONE_BUS}\`echo $(lsusb -d ${PHONE_VENDOR}:) | cut -d' ' -f 4 | cut -b 1-3` #extract vendor ID from lsusb  

SOURCEBASE=/run/${USERID}/gvfs/mtp\:host\=%5Busb%3A${PHONE_BUS}%5D
TARGETBASE= # your target base path here

rsync -a --progress ${SOURCEBASE} ${TARGETBASE}  # your rsync commands here

No sé si algo cambia (o este script funciona) al aplicar una fstabentrada y luego montar a través de Shell y no depender de las herramientas de la GUI.

Esto funciona para mí y proporciona una forma ordenada de hacer una copia de seguridad del contenido de los teléfonos Android sin copiar tarjetas SD completas o espacios internos.

ACTUALIZACIÓN - Primer intento real

Durante la ejecución, rsynccomenzaron a aparecer errores de E/S, probablemente porque el proceso en general estaba tardando mucho (tenía alrededor de 50 GB para sincronizar). Ahora estoy empezando de nuevo.
Puede ser una buena idea comenzar una base copiando manualmente todos los archivos inicialmente y todos los procesos de sincronización posteriores mediante el uso de rsync.

ACTUALIZACIÓN - Segundo intento

Entonces sucede que esta cantidad puede ser demasiado para un intento. Tal vez este también sea mi teléfono inteligente de mierda. En general funciona y después de la primera carga inicial estará bien, supongo.