|
ROMs y desarrollo Samsung Galaxy S II ROMs y desarrollo Samsung Galaxy S II |
|
Herramientas |
#1
|
||||
|
||||
[REF] ADB BACKUP, haz y restaura backups de tus datos en ICS desde el ordenador y sin necesidad de ser root
Hay una característica incluida en Android ICS muy curiosa que ha pasado bastante desapercibida, y es la posibilidad de hacer y restaurar backups con adb sin necesidad de ser root.
Por aclarar antes de nada, esta función ni existe ni funciona en GingerBread Además de lo útil que es para quien no tenga/sea root y quiera hacer un factory reset sin perder sus datos, para los que solemos tener las sdcard llenas continuamente además nos permite hacer lo mismo que hace por ejemplo titanium (copiar todas nuestras apps con sus datos) pero dejando el backup en el PC y restaurarlo desde eĺ, es decir, sin necesitar espacio en la sdcard para almacenarlo. El comando Esta es la sintaxis que propone adb de serie, pero parece que solo es compatible tal cual con el Galaxy Nexus o similares, ya que por la propia estructura interna del SGS2 (especialmente por la gestión de vold) hay cosas que no funcionan como se propone aquí: Código:
adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|-nosystem] [<packages...>] - write an archive of the device's data to <file>. If no -f option is supplied then the data is written to "backup.ab" in the current directory. (-apk|-noapk enable/disable backup of the .apks themselves in the archive; the default is noapk.) (-shared|-noshared enable/disable backup of the device's shared storage / SD card contents; the default is noshared.) (-all means to back up all installed applications) (-system|-nosystem toggles whether -all automatically includes system applications; the default is to include system apps) (<packages...> is the list of applications to be backed up. If the -all or -shared flags are passed, then the package list is optional. Applications explicitly given on the command line will be included even if -nosystem would ordinarily cause them to be omitted.) adb restore <file> - restore device contents from the <file> backup archive A pesar de todas las opciones que brinda el applet y mil pruebas después, lo único que podemos hacer en el SGS2 (al menos con stock roms, no he probado en cyanos o aosps):
Estos serían los comandos para cada opción. Ten en cuenta que el tiempo de aplicación y el tamaño del backup varía en función del número de apps y los datos en la sdcard, especialmente si usas las dos últimas opciones como puedes ver a continuación:
También puedes hacer backup individuales por aplicación, pero debes utilizar el nombre del proceso para ello: adb backup -apk com.anddoes.fancywidgets -f /RUTA/fancywidgets.backup *si pones -noapk en vez de -apk, no incluirás apk en sí y solo harás backup de sus datos y para restaurarlo: adb restore /RUTA/fancywidgets.backup Requisitos
El proceso Una vez lanzado el comando, debemos desbloquear el terminal y confirmar la solicitud de backup. A partir de ahí solo esperar a que termine. No es un proceso muy amigable que digamos, apenas emite mensajes, solo deja el terminal tranquilo hasta que termine. Yo lo que hacía era comprobar de vez en cuando el tamaño del archivo-backup para saber si se había bloqueado o no, ya que como digo, llegado un punto y dependiendo del backup en que se queda como en pausa sin emitir ningún mensaje ni progreso. Si el backup crece, es que el proceso está activo. También te da la oportunidad de añadir un password si quieres proteger el backup o en el caso de tener encriptado el contenido de tu terminal, meter la clave oportuna. A la hora de restaurar es igual de "opaco" o más si cabe, solo déjale que termine. He creado una par de scripts super básicos para hacer estas tareas de una forma un poco "más amigable" , puede ser útil para quien no quiera trastear con los comandos: Asistente adb_backup para linux: http://db.tt/PpzojGDG Asistente adb_backup para windows: http://db.tt/7YA4KSBd **gracias a jrsoft por los tips *Si no tienes configurado en el PATH la ruta a platform-tools, pon el archivo en la carpeta platform-tools y ejecútalo desde ahí.
__________________
________ ★[CWMODIN] Flashea y personaliza ODIN stock roms desde el recovery http://ow.ly/kbEwt★[Universal Flasher Tool] Flashea temas metamorph y archivos desde el recovery con autobackup http://goo.gl/Gxucm Última edición por intronauta Día 10/04/12 a las 12:55:22. |
Los siguientes 33 usuarios han agradecido a intronauta su comentario: | ||
|
#4
|
||||
|
||||
juas! de casualidad. Al intentar conectar con adb y escribir mal "adb shell", te saca el listado de comandos y de casualidad lo vi. me llamó la atención porque no me sonaba de verlo antes, probé con versiones antiguas de adb y vi que no salía, así que me puse a probar comandos como un loco. Busqué info pero no encontré casi nada, y menos en android.developers O_o, así que mucho ensayo y error XD
__________________
________ ★[CWMODIN] Flashea y personaliza ODIN stock roms desde el recovery http://ow.ly/kbEwt★[Universal Flasher Tool] Flashea temas metamorph y archivos desde el recovery con autobackup http://goo.gl/Gxucm |
Gracias de parte de: | ||
#5
|
||||
|
||||
Yo es que me quedo muerto con lo que Intronauta saca cada vez . Yo cuando se mayor quiero ser él. Felicidades tío, por tus post y por lo útiles que son, de verdad!!
__________________
|
#8
|
||||
|
||||
Si algún alma caritativa prueba el "asistente" de windows me haría un favor, porque no controlo mucho batch y no he podido probarlo "intensivamente", solo he tenido acceso a windows 7 durante un rato para hacerlo y de primeras no he visto nada raro. La versión de linux es la que más he probado y parece que funciona sin fallos.
La versión de windows funcionar funciona, porque he hecho un par de backups y los he restaurado, pero en cuanto a los menús y eso no se si irán del todo bien, y mira que es simple XD Hay algunas comprobaciones para evitar errores como checkear que las rutas existen cuando nos pide introducirlas que no están implementadas en la versión de windows y si en la de linux, pero es que no se como hacerlo. Así que como no las pongas bien, dará error y saldrá, teniendo que volver a repetir los pasos. Tampoco es un drama, pero en la versión de linux al menos te deja reintentar hasta que lo escribas bien y compruebe que la ruta es válida, que es lo suyo :P Si alguien controla de batch, sabe como hacerlo y se anima bienvenido sea ;)
__________________
________ ★[CWMODIN] Flashea y personaliza ODIN stock roms desde el recovery http://ow.ly/kbEwt★[Universal Flasher Tool] Flashea temas metamorph y archivos desde el recovery con autobackup http://goo.gl/Gxucm |
#9
|
||||
|
||||
Me encanta, no me gusta nada tener la sd ocupada de lo que para mi es basura.
Millones de zankius Enviado desde mi GT-I9100 usando Tapatalk |
#10
|
||||
|
||||
Si algún alma caritativa prueba el "asistente" de windows me haría un favor, porque no controlo mucho batch y no he podido probarlo "intensivamente", solo he tenido acceso a windows 7 durante un rato para hacerlo y de primeras no he visto nada raro. La versión de linux es la que más he probado y parece que funciona sin fallos.
La versión de windows funcionar funciona, porque he hecho un par de backups y los he restaurado, pero en cuanto a los menús y eso no se si irán del todo bien, y mira que es simple XD Hay algunas comprobaciones para evitar errores como checkear que las rutas existen cuando nos pide introducirlas que no están implementadas en la versión de windows y si en la de linux, pero es que no se como hacerlo. Así que como no las pongas bien, dará error y saldrá, teniendo que volver a repetir los pasos. Tampoco es un drama, pero en la versión de linux al menos te deja reintentar hasta que lo escribas bien y compruebe que la ruta es válida, que es lo suyo :P Si alguien controla de batch, sabe como hacerlo y se anima bienvenido sea ;) Lo de implementar la comprobación de ruta para que la compruebe y la cree en caso necesario es sencillo, puede ser una cosa tal que así: Código:
:COMPROBACION DE RUTA if exist %WW% goto AVISO goto seguir :AVISO echo. echo ==================================================== echo [!] AVISO. La ruta ya existe, así que se va a utilizar echo ==================================================== echo. pause goto backup :seguir echo Creando la ruta %ww% md %ww% goto backup :backup
__________________
|
#11
|
||||
|
||||
Otra cosa, la linea 90 para establecer el nombre del archivo de backup.... casi que queda más curiosa si cambias esto:
Código:
SET FILE=-f %WW%\Back_up.back Código:
:: variables al iniciar el script set Any=%Date:~8% set Mes=%Date:~3,2% set Dia=%Date:~0,2% set Dig=%Time:~0,1% IF "%Dig%"==" " ( set Hor=0%Time:~1,1% set Min=%Time:~3,2% ) ELSE ( set Hor=%Time:~0,2% set Min=%Time:~3,2% ) ::nombre del archivo con fecha y hora SET FILE=-f %WW%\Backup_%Dia%%Mes%%Any%_%Hor%%Min%.back
__________________
|
Gracias de parte de: | ||
#12
|
||||
|
||||
Ya por ultimo, el bloque final lo dejaría así de momento:
Código:
:EXE CLS title [!] Reiniciando adb server... adb kill-server adb start-server echo %HEADER% echo . title [!] Acepta la solicitud en tu terminal para iniciar el proceso. IF '%V1%' == 'backup' (echo [!] Puedes introducir un password si quieres encriptar los datos) echo [!] Depende de la opcion y la cantidad de datos puede durar desde unos echo minutos hasta una o varias hora. Se paciente... echo . title [!] Realizando backup, espera por favor... echo adb %V1% %V2% %FILE% adb %V1% %V2% %FILE% echo Finalizado :FIN adb kill-server EXIT /b 0
__________________
|
#13
|
||||
|
||||
Tremendo aporte, como todos los de intronauta (que suerte tener el mismo termial que el)
Esto creo que deberia de estar entre las chinchetas al igual que otros hilos de intronauta como el CMWodin para transformar una instalacion por Odin en recovery. Por cierto jrsoft ¿no te animas con la cocina en SGS2 con una de tus maravillosas ROMS? de intronauta llegue muy tarde a este terminal y no probe ninguna pero tambien deben ser la bomba.(lo dejo caer por si cuela por parte de alguno de los dos ) PD: Yo tambien estoy algo perrete con las ROMs desde hace muuuuchoooo tiempo.
__________________
|
#14
|
||||
|
||||
Masquina, eres un masquina |
#15
|
||||
|
||||
Otra cosa, la linea 90 para establecer el nombre del archivo de backup.... casi que queda más curiosa si cambias esto:
Código:
SET FILE=-f %WW%\Back_up.back Código:
:: variables al iniciar el script set Any=%Date:~8% set Mes=%Date:~3,2% set Dia=%Date:~0,2% set Dig=%Time:~0,1% IF "%Dig%"==" " ( set Hor=0%Time:~1,1% set Min=%Time:~3,2% ) ELSE ( set Hor=%Time:~0,2% set Min=%Time:~3,2% ) ::nombre del archivo con fecha y hora SET FILE=-f %WW%\Backup_%Dia%%Mes%%Any%_%Hor%%Min%.back Ya por ultimo, el bloque final lo dejaría así de momento:
Código:
:EXE CLS title [!] Reiniciando adb server... adb kill-server adb start-server echo %HEADER% echo . title [!] Acepta la solicitud en tu terminal para iniciar el proceso. IF '%V1%' == 'backup' (echo [!] Puedes introducir un password si quieres encriptar los datos) echo [!] Depende de la opcion y la cantidad de datos puede durar desde unos echo minutos hasta una o varias hora. Se paciente... echo . title [!] Realizando backup, espera por favor... echo adb %V1% %V2% %FILE% adb %V1% %V2% %FILE% echo Finalizado :FIN adb kill-server EXIT /b 0 Ya está resubido. Ahora al menos ya son prácticamente iguales ambos scripts Hacía milenios que no hacía nada en DOS batch, la verdad es que es bastante sencillo si recuerdas los comandos, y para cosas sencillas como esta es más fácil que bourne-bash shell, aunque menos flexible. Una cosa que prefiero no incluir en tu propuesta de "exist" es que cree la ruta si no existe. De hecho, el comando de adb backup ya crea las rutas si no existen. Cuando empecé a probar en windows, como las rutas en consola, "las reales". son en inglés me volví loco porque me creaba la ruta c:\usuarios\intronauta\escritorio y claro, no veía el backup por ningún lado ya que debía ser c:\Users\intronauta\Desktop (o todo en minúsculas) , así que prefiero que la ruta final ya exista, así el usuario tiene el control de la ruta final y no perderá de vista la localización del backup por fallar en la sintaxis. El único problema que me queda por resolver en el batch es que en linux es muy sencillo diferenciar entre que detecte si existe una carpeta o un archivo. Cuando hacemos un backup, exist cumple perfectamente porque el proceso nos pide una ruta a una carpeta y comprueba que existe esa ruta. Pero en el restore, cuando nos pide la ruta completa incluyendo el nombre del archivo del backup, si pones c: te lo acepta porque la ruta existe, que es lo único que hace exist, comprobar que una ruta es válida. ¿hay algúna variante de exist que diferencie entre comprobar que existe una carpeta y un archivo? una opción sería hacerlo en dos preguntas, una a la ruta y otra del nombre del archivo backup y luego comprobar, pero me gustaría hacerlo todo del tirón ¿es posible? Por eso el comando de salida EXIT o la autosalida no me gusta mucho, porque cuando da error no te da tiempo a ver qué pasó (como lo de poner en el restore la ruta c: , tarda un segundo en cerrarse, o que no se encuentra adb, adb out of date, etc,...). Así que prefiero un pause y luego matar el adb, que no sabía que daba errores si se mantiene abierto en windows. En el proceso incluí lo de reiniciar el server solo porque cuando hacía pruebas y a base de interrumpir el proceso terminaba quedándose tonto, así que me hacía la vida más fácil reiniciarlo por defecto. Al final lo dejé por garantizar el proceso, ya que cuando se quedaba "tonto", como el proceso no lanza mensajes de progreso (por ejemplo al hacer un restore), te puedes tirar horas hasta darte cuenta de que ni había empezado.
__________________
________ ★[CWMODIN] Flashea y personaliza ODIN stock roms desde el recovery http://ow.ly/kbEwt★[Universal Flasher Tool] Flashea temas metamorph y archivos desde el recovery con autobackup http://goo.gl/Gxucm Última edición por intronauta Día 09/04/12 a las 22:26:03. |
#16
|
||||
|
||||
En Windows si no se cierra el proceso adb se van creando múltiples en memoria hasta que se satura, y al cabo de un rato al relanzarlo saldría un mensaje fugaz en la consola de session expired y se cierra. Si uno no está atento no lo ve y ya piensa en fallos de sintaxis.
Para diferenciar entre archivo o carpeta creo que con una simple barra inclinada al final de la ruta serviría, pero no me acuerdo y habría que comprobarlo bien: c:\backup\backup ---> archivo c:\backup\backup\ ---> carpeta |
#17
|
||||
|
||||
En Windows si no se cierra el proceso adb se van creando múltiples en memoria hasta que se satura, y al cabo de un rato al relanzarlo saldría un mensaje fugaz en la consola de session expired y se cierra. Si uno no está atento no lo ve y ya piensa en fallos de sintaxis.
Para diferenciar entre archivo o carpeta creo que con una simple barra inclinada al final de la ruta serviría, pero no me acuerdo y habría que comprobarlo bien: c:\backup\backup ---> archivo c:\backup\backup\ ---> carpeta Sobre lo de diferenciar archivo-carpeta es que no soluciona el problema cuando el proceso pide una ruta completa incluyendo el nombre archivo y le ponemos cualquier ruta válida, dándola por buena aunque sea una ruta a una carpeta. : Creo que voy a poner dos preguntas en esa parte del proceso, una para pedir la ruta a la carpeta y otra del nombre del archivo backup, luego crear una cadena con ambas y comprobar con exist si existe. Al menos hasta que aparezca otra solución más "limpia".
__________________
________ ★[CWMODIN] Flashea y personaliza ODIN stock roms desde el recovery http://ow.ly/kbEwt★[Universal Flasher Tool] Flashea temas metamorph y archivos desde el recovery con autobackup http://goo.gl/Gxucm |
#18
|
||||
|
||||
Intronauta y jrsoft valla dos fenómenos. Como echo de menos vuestras rom aunque con el one de la seño sigo con la jrsoft.
Gracias y un saludo |
#19
|
||||
|
||||
Código:
:MENU4 SET V1=restore SET V2= SET x=0 SET FILE= SET AA= SET RR= CLS echo %HEADER% echo . echo [!] Introduce la ruta completa a la carpeta donde se encuentra el backup: echo (p.ej: c:\Users\pepito\backups\) ("menu" para volver) echo . SET /p RR=Ruta= IF '%RR%' == 'menu' (GOTO MENU1) echo . echo [!] Introduce el nombre del backup: echo (p.ej: Backup_XXXX_XXXX.back) ("menu" para volver) echo . SET /p AA=Archivo= IF '%AA%' == 'menu' (GOTO MENU1) SET FILE=%RR%%AA% echo . IF exist '%FILE%' (GOTO EXE) CLS echo [ERROR] No se encuentra el archivo, revisa la sintaxis echo. echo %FILE% echo. pause GOTO MENU4
__________________
________ ★[CWMODIN] Flashea y personaliza ODIN stock roms desde el recovery http://ow.ly/kbEwt★[Universal Flasher Tool] Flashea temas metamorph y archivos desde el recovery con autobackup http://goo.gl/Gxucm |
|
#20
|
||||
|
||||
La copia de seguridad se crea sin problemas en una ruta sencilla (c:\backup) y también detecta bien el archivo cuando le das a restaurar, he probado introduciendo el nombre mal para que mostrara el error, y también introduciendo el nombre bien para que me lo detecte, y así lo hace. No se de donde te puede venir el problema. Eso si, cuando introduces la ruta de la carpeta hay que hacerlo siempre sin poner una barra inclinada al final (p.e: c:\Backup\) porque da error. La forma correcta sería c:\Backup) Para facilitar el proceso creo que lo mas sencillo sería establecer siempre por defecto una carpeta única para las copias de seguridad, ya que los backups se generan solos con la referencia de la fecha y la hora y no se sobreescribirían nunca.
__________________
Última edición por jrsoft Día 10/04/12 a las 09:35:10. |
Estás aquí | ||||||
|
Herramientas | |