Las copias de seguridad de adb fallan con "Excepción interna durante la copia de seguridad completa"

Desde hace un tiempo, no he podido crear un completo adb backupde mi Nexus 4.

Ahora, finalmente, pude obtener un informe de error un poco más útil con logcat:

D/BackupManagerService( 2061): Calling doFullBackup() on de.blinkt.openvpn
I/file_backup_helper( 9115):    Name: apps/de.blinkt.openvpn/r/app_webview
I/file_backup_helper( 9115):    Name: apps/de.blinkt.openvpn/r/app_webview/Web Data-journal
I/file_backup_helper( 9115):    Name: apps/de.blinkt.openvpn/r/app_webview/Web Data
I/file_backup_helper( 9115):    Name: apps/de.blinkt.openvpn/r/app_webview/paks
I/file_backup_helper( 9115):    Name: apps/de.blinkt.openvpn/f/8b8192c9-4aa3-42b3-affb-fd49fc7044d7.vp
I/file_backup_helper( 9115):    Name: apps/de.blinkt.openvpn/sp/WebViewChromiumPrefs.xml
I/file_backup_helper( 9115):    Name: apps/de.blinkt.openvpn/sp/activities.LogWindow.xml
I/file_backup_helper( 9115):    Name: apps/de.blinkt.openvpn/sp/de.blinkt.openvpn_preferences.xml
I/file_backup_helper( 9115):    Name: apps/de.blinkt.openvpn/sp/VPNList.xml
I/art     ( 2268): Wrote stack traces to '/data/anr/traces.txt'
I/art     ( 2288): Wrote stack traces to '/data/anr/traces.txt'
I/art     ( 2717): Wrote stack traces to '/data/anr/traces.txt'
I/art     ( 2061): Explicit concurrent mark sweep GC freed 217771(9MB) AllocSpace objects, 32(1594KB) LOS objects, 33% fr
ee, 29MB/44MB, paused 2.136ms total 158.660ms
E/BackupManagerService( 2061): Internal exception during full backup
E/BackupManagerService( 2061): java.lang.ArrayIndexOutOfBoundsException: length=32768; regionStart=0; regionLength=-1
E/BackupManagerService( 2061):  at java.util.Arrays.checkOffsetAndCount(Arrays.java:1719)
E/BackupManagerService( 2061):  at java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:174)
E/BackupManagerService( 2061):  at com.android.server.backup.BackupManagerService.routeSocketDataToOutput(BackupManagerSe
rvice.java:3135)
E/BackupManagerService( 2061):  at com.android.server.backup.BackupManagerService.access$900(BackupManagerService.java:15
8)
E/BackupManagerService( 2061):  at com.android.server.backup.BackupManagerService$FullBackupEngine.backupOnePackage(Backu
pManagerService.java:3271)
E/BackupManagerService( 2061):  at com.android.server.backup.BackupManagerService$PerformAdbBackupTask.run(BackupManagerS
ervice.java:3849)
E/BackupManagerService( 2061):  at java.lang.Thread.run(Thread.java:818)
D/BackupManagerService( 2061): Full backup processing complete.
D/bu      ( 6589): Finished.
D/AndroidRuntime( 6589): Shutting down VM
D/BackupManagerService( 2061): Full backup pass complete.

Estoy ejecutando CyanogenMod 12.1-20151007-SNAPSHOT-YOG4PAO334-mako. Sin embargo, este problema comenzó algunos lanzamientos antes.

Mi sistema de archivos de Android está encriptado. Normalmente ejecuto la copia de seguridad de esta manera:

adb backup -apk -shared -system -all -f "adb-backup.$(date +"%Y%m%d").ab"

¿Algunas ideas?

(Por cierto, creo que el hecho de que OpenVPN estaba siendo respaldado justo antes del problema es probablemente una pista falsa)

Respuestas (1)

Mientras escribía la pregunta, logré terminar una copia de seguridad completa. Utilicé la -nocompressbandera (que no está documentada en la ayuda para adb) y usé la misma frase de contraseña para la copia de seguridad que para el cifrado de mi sistema de archivos de Android.

Entonces, este fue el comando completo:

adb backup -nocompress -apk -shared -system -all -f "adb-backup.$(date +"%Y%m%d").ab"

gato de registro:

...
I/file_backup_helper( 6652):    Name: shared/0/0/Ringtones
I/file_backup_helper( 6652):    Name: shared/0/0/Ringtones/hangouts_incoming_call.ogg
I/file_backup_helper( 6652):    Name: shared/0/0/Ringtones/hangouts_video_call.ogg
I/file_backup_helper( 6652):    Name: shared/0/0/Ringtones/hangouts_message.ogg
I/file_backup_helper( 6652):    Name: shared/0/0/Podcasts
I/file_backup_helper( 6652):    Name: shared/0/0/Music
D/BackupManagerService( 2061): Full package backup success: com.android.sharedstoragebackup
D/BackupManagerService( 2061): Full backup processing complete.
D/bu      ( 9722): Finished.
D/AndroidRuntime( 9722): Shutting down VM
D/BackupManagerService( 2061): Full backup pass complete.