-
Notifications
You must be signed in to change notification settings - Fork 8
/
backup_apps.sh
executable file
·65 lines (51 loc) · 1.44 KB
/
backup_apps.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
# License; Apache-2
# Originally from Raphael Moll
# Tested/Fixed for Android O by marc_soft@merlins.org 2017/12
set -e # fail early
if [[ "$1" == "-d" ]]; then shift; DRY="echo" ; fi
DRY=""
A="adb -d"
echo "## Restart adb as root"
$DRY $A root
$DRY sleep 3s
echo "## Stop Runtime" && $DRY $A shell stop
HW=`$A shell getprop ro.hardware | tr -d '\r'`
BUILD=`$A shell getprop ro.build.id | tr -d '\r'`
DATE=`date +%F`
DIR="${HW}_${DATE}_${BUILD}"
if test -d "$DIR"; then
echo "$DIR already exists, exiting"
exit 2
fi
echo "### Creating dir $DIR"
$DRY mkdir -p $DIR
$DRY cd $DIR
$DRY mkdir -p app
$DRY mkdir -p data
echo "## Pull apps"
# Asec is gone in O?
#( mkdir -p asec ; cd asec ; $DRY adb pull /mnt/asec . || echo "### Failed to get /mnt/asec" )
# This does not work anymore:
#for APP in app app-private; do
#
# for i in `$A shell ls /data/$APP | tr -d "\r" ` ; do
# echo $i
# $DRY $A pull /data/$APP/$i $APP/$i
# d=${i%.apk}
# d=${d%.zip}
# d=${d%-[1-9]}
# # /data/app/org.openintents.filemanager-0lGhieUsRc8H0LTGv2DyYQ==
# # ccc71.at.free-cEQUrmG-8tLASwXXJi-03Q==
# d=${d%%-*==}
# $DRY mkdir -p data/$d
# #$DRY $A pull /data/data/$d data/$d || echo "### Failed for $d"
# $DRY $A pull /data/data/$d data || echo "### Failed for $d"
# done
#
#done
adb pull /data/data
adb pull /data/app
rm -rf data/*/cache/*
echo "## Restart Runtime" && $DRY $A shell start
[[ $DRY ]] && echo "DRY RUN ONLY! Use $0 -f to actually download."